diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index c77b21e..65dfa60 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -11,5 +11,5 @@ on: # See also commands.yml for the /backport triggered variant of this workflow. jobs: - backport: - uses: upbound/uptest/.github/workflows/provider-backport.yml@main + - backport: + - uses: upbound/uptest/.github/workflows/provider-backport.yml@main diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 339c610..e76c5b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,13 +10,15 @@ on: env: # Common versions - GO_VERSION: '1.19' - GOLANGCI_VERSION: 'v1.50.0' - DOCKER_BUILDX_VERSION: 'v0.8.2' + GO_VERSION: '1.21.2' + GOLANGCI_VERSION: 'v1.54.2' + DOCKER_BUILDX_VERSION: 'v0.10.0' # Common users. We can't run a step 'if secrets.XXX != ""' but we can run a # step 'if env.XXX != ""', so we copy these to succinctly test whether # credentials have been provided before trying to run steps that need them. + DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }} + DATADOG_APP_KEY: ${{ secrets.DATADOG_APP_KEY }} UPBOUND_MARKETPLACE_PUSH_ROBOT_USR: ${{ secrets.UPBOUND_MARKETPLACE_PUSH_ROBOT_USR }} jobs: diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 4aae1d9..64799ef 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -7,6 +7,8 @@ on: jobs: e2e: uses: upbound/uptest/.github/workflows/pr-comment-trigger.yml@main + with: + go-version: '1.21' secrets: UPTEST_CLOUD_CREDENTIALS: ${{ secrets.UPTEST_CLOUD_CREDENTIALS }} UPTEST_DATASOURCE: ${{ secrets.UPTEST_DATASOURCE }} diff --git a/.gitignore b/.gitignore index a6d3db0..46c7ace 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +kubeconfig + /.cache /.work /_output @@ -9,3 +11,5 @@ cover.out # ignore IDE folders .vscode/ .idea/ + +terraform/ diff --git a/.golangci.yml b/.golangci.yml index 494a907..b3bf8a9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,8 +1,8 @@ run: - deadline: 10m + timeout: 10m skip-files: - - "zz_\\..+\\.go$" + - "zz_generated\\..+\\.go$" output: # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" @@ -27,22 +27,20 @@ linters-settings: # report about shadowed variables check-shadowing: false - golint: - # minimal confidence for issues, default is 0.8 - min-confidence: 0.8 - gofmt: # simplify code: gofmt with `-s` option, true by default simplify: true - goimports: - # put imports beginning with prefix after 3rd-party packages; - # it's a comma-separated list of prefixes - local-prefixes: github.com/upbound/upjet-provider-template +# gci: +# custom-order: true +# sections: +# - standard +# - default +# - prefix(github.com/upbound/provider-datadog) gocyclo: # minimal code complexity to report, 30 by default (but we recommend 10-20) - min-complexity: 10 + min-complexity: 20 maligned: # print struct with more effective memory layout or not, false by default @@ -102,21 +100,40 @@ linters-settings: rangeValCopy: sizeThreshold: 32 + nolintlint: + require-explanation: false + require-specific: true + + revive: + rules: + - name: package-comments + disabled: true + + linters: enable: - megacheck - govet - gocyclo - gocritic - - interfacer - goconst - - goimports + # - gci - gofmt # We enable this as well as goimports for its simplify mode. - prealloc - - golint + - revive - unconvert - misspell - nakedret + - nolintlint + + disable: + # These linters are all deprecated as of golangci-lint v1.49.0. We disable + # them explicitly to avoid the linter logging deprecation warnings. + - deadcode + - varcheck + - scopelint + - structcheck + - interfacer presets: - bugs @@ -136,7 +153,7 @@ issues: - gosec - scopelint - unparam - + # Ease some gocritic warnings on test files. - path: _test\.go text: "(unnamedResult|exitAfterDefer)" @@ -174,6 +191,11 @@ issues: - gosec - gas + # Some k8s dependencies do not have JSON tags on all fields in structs. + - path: k8s.io/ + linters: + - musttag + # Independently from option `exclude` we use default exclude patterns, # it can be disabled by this option. To list all # excluded by default patterns execute `golangci-lint run --help`. diff --git a/LICENSE b/LICENSE index 5695f4d..9b0d144 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [YEAR] Upbound Inc. All rights reserved. + Copyright 2024 Upbound Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Makefile b/Makefile index a9c9cdd..654a2ad 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,19 @@ # ==================================================================================== # Setup Project -PROJECT_NAME ?= upjet-provider-template +PROJECT_NAME ?= provider-datadog PROJECT_REPO ?= github.com/upbound/$(PROJECT_NAME) -export TERRAFORM_VERSION ?= 1.2.1 +export TERRAFORM_VERSION ?= 1.5.5 -export TERRAFORM_PROVIDER_SOURCE ?= hashicorp/null -export TERRAFORM_PROVIDER_REPO ?= https://github.com/hashicorp/terraform-provider-null -export TERRAFORM_PROVIDER_VERSION ?= 3.1.0 -export TERRAFORM_PROVIDER_DOWNLOAD_NAME ?= terraform-provider-null +export TERRAFORM_PROVIDER_SOURCE ?= DataDog/datadog +export TERRAFORM_PROVIDER_REPO ?= https://github.com/DataDog/terraform-provider-datadog +export TERRAFORM_PROVIDER_VERSION ?= 3.37.0 +export TERRAFORM_PROVIDER_DOWNLOAD_NAME ?= terraform-provider-datadog export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX ?= https://releases.hashicorp.com/$(TERRAFORM_PROVIDER_DOWNLOAD_NAME)/$(TERRAFORM_PROVIDER_VERSION) -export TERRAFORM_NATIVE_PROVIDER_BINARY ?= terraform-provider-null_v3.1.0_x5 +export TERRAFORM_NATIVE_PROVIDER_BINARY ?= terraform-provider-datadog_v3.37.0 export TERRAFORM_DOCS_PATH ?= docs/resources - PLATFORMS ?= linux_amd64 linux_arm64 # -include will silently skip missing files, which allows us @@ -40,8 +39,8 @@ NPROCS ?= 1 # to half the number of CPU cores. GO_TEST_PARALLEL := $(shell echo $$(( $(NPROCS) / 2 ))) -GO_REQUIRED_VERSION ?= 1.19 -GOLANGCILINT_VERSION ?= 1.50.0 +GO_REQUIRED_VERSION ?= 1.21.2 +GOLANGCILINT_VERSION ?= 1.54.2 GO_STATIC_PACKAGES = $(GO_PROJECT)/cmd/provider $(GO_PROJECT)/cmd/generator GO_LDFLAGS += -X $(GO_PROJECT)/internal/version.Version=$(VERSION) GO_SUBDIRS += cmd internal apis @@ -50,10 +49,10 @@ GO_SUBDIRS += cmd internal apis # ==================================================================================== # Setup Kubernetes tools -KIND_VERSION = v0.15.0 -UP_VERSION = v0.18.0 +KIND_VERSION = v0.20.0 +UP_VERSION = v0.22.1 UP_CHANNEL = stable -UPTEST_VERSION = v0.5.0 +UPTEST_VERSION = v0.10.0 -include build/makelib/k8s_tools.mk # ==================================================================================== @@ -89,7 +88,7 @@ fallthrough: submodules # NOTE(hasheddan): we force image building to happen prior to xpkg build so that # we ensure image is present in daemon. -xpkg.build.upjet-provider-template: do.build.images +xpkg.build.provider-datadog: do.build.images # NOTE(hasheddan): we ensure up is installed prior to running platform-specific # build steps in parallel to avoid encountering an installation race condition. @@ -169,7 +168,7 @@ CROSSPLANE_NAMESPACE = upbound-system # This target requires the following environment variables to be set: # - UPTEST_EXAMPLE_LIST, a comma-separated list of examples to test # To ensure the proper functioning of the end-to-end test resource pre-deletion hook, it is crucial to arrange your resources appropriately. -# You can check the basic implementation here: https://github.com/upbound/uptest/blob/main/internal/templates/01-delete.yaml.tmpl. +# You can check the basic implementation here: https://github.com/upbound/uptest/blob/main/internal/datadogs/01-delete.yaml.tmpl. # - UPTEST_CLOUD_CREDENTIALS (optional), multiple sets of AWS IAM User credentials specified as key=value pairs. # The support keys are currently `DEFAULT` and `PEER`. So, an example for the value of this env. variable is: # DEFAULT='[default] @@ -182,7 +181,7 @@ CROSSPLANE_NAMESPACE = upbound-system # - UPTEST_DATASOURCE_PATH (optional), see https://github.com/upbound/uptest#injecting-dynamic-values-and-datasource uptest: $(UPTEST) $(KUBECTL) $(KUTTL) @$(INFO) running automated tests - @KUBECTL=$(KUBECTL) KUTTL=$(KUTTL) $(UPTEST) e2e "${UPTEST_EXAMPLE_LIST}" --data-source="${UPTEST_DATASOURCE_PATH}" --setup-script=cluster/test/setup.sh --default-conditions="Test" || $(FAIL) + @KUBECTL=$(KUBECTL) KUTTL=$(KUTTL) CROSSPLANE_NAMESPACE=$(CROSSPLANE_NAMESPACE) $(UPTEST) e2e "${UPTEST_EXAMPLE_LIST}" --data-source="${UPTEST_DATASOURCE_PATH}" --setup-script=cluster/test/setup.sh --default-conditions="Test" || $(FAIL) @$(OK) running automated tests local-deploy: build controlplane.up local.xpkg.deploy.provider.$(PROJECT_NAME) @@ -236,6 +235,10 @@ endef # binary will try to use CROSSPLANE_HELP if it is set, and this is for something different. export CROSSPLANE_MAKE_HELP +gen-clean: + @find . -name "zz_*.go"|xargs rm + @rm -rf ./examples-generated/* + crossplane.help: @echo "$$CROSSPLANE_MAKE_HELP" diff --git a/README.md b/README.md index e57c399..f70eeee 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,69 @@ -# Provider Template +# Provider Datadog -`upjet-provider-template` is a [Crossplane](https://crossplane.io/) provider that +`provider-datadog` is a [Crossplane](https://crossplane.io/) provider that is built using [Upjet](https://github.com/crossplane/upjet) code generation tools and exposes XRM-conformant managed resources for the -Template API. +Datadog API. + +## Prerequisites + +This provider interacts with a +[Datadog account](https://www.datadoghq.com/). It authenticates +to the account using a Datadog API Key, an Application key, and +a Datadog account endpoint URL. +The keys can be generated inside the account +and be stored in a Kubernetes secret on the Crossplane +management cluster. The format of the secret is as follows: +``` + { + "api_key": "INSERT_API_KEY", + "app_key": "INSERT_APP_KEY", + "api_url": "https://api.datadoghq.com/" + } +``` +Note that your preferred endpoint may differ. +The Kubernertes secret can be referenced by +the ProviderConfig, so that the provider-datadog can connect +to the desired Datadog account. A ProviderConfig may look +as follows: +``` +apiVersion: datadog.upbound.io/v1beta1 +kind: ProviderConfig +metadata: + name: default +spec: + credentials: + source: Secret + secretRef: + name: datadog-creds + namespace: upbound-system + key: credentials +``` + +To run local tests, create a datadog-secret file per above. +Then create an `UPTEST_CLOUD_CREDENTIALS` environment variable +as follows +``` +export UPTEST_CLOUD_CREDENTIALS=$(cat ) +``` +Once complete, specify the tests that you would like to run +in the `UPTEST_EXAMPLE_LIST` environment variable. An example +is as follows: +``` +export UPTEST_EXAMPLE_LIST="./examples/datadog/dashboardjson.yaml" +``` +Note that you may specify multiple comma separated tests. +Now run `UPTEST_EXAMPLE_LIST="./examples/datadog/v1alpha1/dashboardjson.yaml" make e2e`. This will create a local kind cluster, +install Crossplane and the provider-datadog from a local build +and run Uptests managed resources apply, update, import, delete +tests. ## Getting Started Install the provider by using the following command after changing the image tag -to the [latest release](https://marketplace.upbound.io/providers/upbound/upjet-provider-template): +to the [latest release](https://marketplace.upbound.io/providers/upbound/provider-datadog): ``` -up ctp provider install upbound/upjet-provider-template:v0.1.0 +up ctp provider install upbound/provider-datadog:v0.1.0 ``` Alternatively, you can use declarative installation: @@ -19,21 +72,20 @@ cat < +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *RetentionFilter) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *RetentionFilterOrder) Hub() {} diff --git a/apis/apm/v1alpha1/zz_generated.deepcopy.go b/apis/apm/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..8a3e138 --- /dev/null +++ b/apis/apm/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,469 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters) DeepCopyInto(out *FilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters. +func (in *FilterInitParameters) DeepCopy() *FilterInitParameters { + if in == nil { + return nil + } + out := new(FilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation) DeepCopyInto(out *FilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation. +func (in *FilterObservation) DeepCopy() *FilterObservation { + if in == nil { + return nil + } + out := new(FilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters) DeepCopyInto(out *FilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters. +func (in *FilterParameters) DeepCopy() *FilterParameters { + if in == nil { + return nil + } + out := new(FilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilter) DeepCopyInto(out *RetentionFilter) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilter. +func (in *RetentionFilter) DeepCopy() *RetentionFilter { + if in == nil { + return nil + } + out := new(RetentionFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RetentionFilter) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterInitParameters) DeepCopyInto(out *RetentionFilterInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterInitParameters) + (*in).DeepCopyInto(*out) + } + if in.FilterType != nil { + in, out := &in.FilterType, &out.FilterType + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Rate != nil { + in, out := &in.Rate, &out.Rate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterInitParameters. +func (in *RetentionFilterInitParameters) DeepCopy() *RetentionFilterInitParameters { + if in == nil { + return nil + } + out := new(RetentionFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterList) DeepCopyInto(out *RetentionFilterList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RetentionFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterList. +func (in *RetentionFilterList) DeepCopy() *RetentionFilterList { + if in == nil { + return nil + } + out := new(RetentionFilterList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RetentionFilterList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterObservation) DeepCopyInto(out *RetentionFilterObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterObservation) + (*in).DeepCopyInto(*out) + } + if in.FilterType != nil { + in, out := &in.FilterType, &out.FilterType + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Rate != nil { + in, out := &in.Rate, &out.Rate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterObservation. +func (in *RetentionFilterObservation) DeepCopy() *RetentionFilterObservation { + if in == nil { + return nil + } + out := new(RetentionFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterOrder) DeepCopyInto(out *RetentionFilterOrder) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrder. +func (in *RetentionFilterOrder) DeepCopy() *RetentionFilterOrder { + if in == nil { + return nil + } + out := new(RetentionFilterOrder) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RetentionFilterOrder) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterOrderInitParameters) DeepCopyInto(out *RetentionFilterOrderInitParameters) { + *out = *in + if in.FilterIds != nil { + in, out := &in.FilterIds, &out.FilterIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderInitParameters. +func (in *RetentionFilterOrderInitParameters) DeepCopy() *RetentionFilterOrderInitParameters { + if in == nil { + return nil + } + out := new(RetentionFilterOrderInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterOrderList) DeepCopyInto(out *RetentionFilterOrderList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RetentionFilterOrder, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderList. +func (in *RetentionFilterOrderList) DeepCopy() *RetentionFilterOrderList { + if in == nil { + return nil + } + out := new(RetentionFilterOrderList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RetentionFilterOrderList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterOrderObservation) DeepCopyInto(out *RetentionFilterOrderObservation) { + *out = *in + if in.FilterIds != nil { + in, out := &in.FilterIds, &out.FilterIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderObservation. +func (in *RetentionFilterOrderObservation) DeepCopy() *RetentionFilterOrderObservation { + if in == nil { + return nil + } + out := new(RetentionFilterOrderObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterOrderParameters) DeepCopyInto(out *RetentionFilterOrderParameters) { + *out = *in + if in.FilterIds != nil { + in, out := &in.FilterIds, &out.FilterIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderParameters. +func (in *RetentionFilterOrderParameters) DeepCopy() *RetentionFilterOrderParameters { + if in == nil { + return nil + } + out := new(RetentionFilterOrderParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterOrderSpec) DeepCopyInto(out *RetentionFilterOrderSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderSpec. +func (in *RetentionFilterOrderSpec) DeepCopy() *RetentionFilterOrderSpec { + if in == nil { + return nil + } + out := new(RetentionFilterOrderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterOrderStatus) DeepCopyInto(out *RetentionFilterOrderStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderStatus. +func (in *RetentionFilterOrderStatus) DeepCopy() *RetentionFilterOrderStatus { + if in == nil { + return nil + } + out := new(RetentionFilterOrderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterParameters) DeepCopyInto(out *RetentionFilterParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterParameters) + (*in).DeepCopyInto(*out) + } + if in.FilterType != nil { + in, out := &in.FilterType, &out.FilterType + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Rate != nil { + in, out := &in.Rate, &out.Rate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterParameters. +func (in *RetentionFilterParameters) DeepCopy() *RetentionFilterParameters { + if in == nil { + return nil + } + out := new(RetentionFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterSpec) DeepCopyInto(out *RetentionFilterSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterSpec. +func (in *RetentionFilterSpec) DeepCopy() *RetentionFilterSpec { + if in == nil { + return nil + } + out := new(RetentionFilterSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionFilterStatus) DeepCopyInto(out *RetentionFilterStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterStatus. +func (in *RetentionFilterStatus) DeepCopy() *RetentionFilterStatus { + if in == nil { + return nil + } + out := new(RetentionFilterStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/apm/v1alpha1/zz_generated.managed.go b/apis/apm/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..0de8e59 --- /dev/null +++ b/apis/apm/v1alpha1/zz_generated.managed.go @@ -0,0 +1,128 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this RetentionFilter. +func (mg *RetentionFilter) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this RetentionFilter. +func (mg *RetentionFilter) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this RetentionFilter. +func (mg *RetentionFilter) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this RetentionFilter. +func (mg *RetentionFilter) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this RetentionFilter. +func (mg *RetentionFilter) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this RetentionFilter. +func (mg *RetentionFilter) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this RetentionFilter. +func (mg *RetentionFilter) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this RetentionFilter. +func (mg *RetentionFilter) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this RetentionFilter. +func (mg *RetentionFilter) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this RetentionFilter. +func (mg *RetentionFilter) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this RetentionFilter. +func (mg *RetentionFilter) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this RetentionFilter. +func (mg *RetentionFilter) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/apm/v1alpha1/zz_generated.managedlist.go b/apis/apm/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..a638153 --- /dev/null +++ b/apis/apm/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,26 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this RetentionFilterList. +func (l *RetentionFilterList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this RetentionFilterOrderList. +func (l *RetentionFilterOrderList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/null/v1alpha1/zz_groupversion_info.go b/apis/apm/v1alpha1/zz_groupversion_info.go similarity index 91% rename from apis/null/v1alpha1/zz_groupversion_info.go rename to apis/apm/v1alpha1/zz_groupversion_info.go index 3b570c9..c4fd18c 100755 --- a/apis/null/v1alpha1/zz_groupversion_info.go +++ b/apis/apm/v1alpha1/zz_groupversion_info.go @@ -9,7 +9,7 @@ Copyright 2022 Upbound Inc. // Code generated by upjet. DO NOT EDIT. // +kubebuilder:object:generate=true -// +groupName=null.template.upbound.io +// +groupName=apm.datadog.upbound.io // +versionName=v1alpha1 package v1alpha1 @@ -20,7 +20,7 @@ import ( // Package type metadata. const ( - CRDGroup = "null.template.upbound.io" + CRDGroup = "apm.datadog.upbound.io" CRDVersion = "v1alpha1" ) diff --git a/apis/apm/v1alpha1/zz_retentionfilter_terraformed.go b/apis/apm/v1alpha1/zz_retentionfilter_terraformed.go new file mode 100755 index 0000000..09374ca --- /dev/null +++ b/apis/apm/v1alpha1/zz_retentionfilter_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this RetentionFilter +func (mg *RetentionFilter) GetTerraformResourceType() string { + return "datadog_apm_retention_filter" +} + +// GetConnectionDetailsMapping for this RetentionFilter +func (tr *RetentionFilter) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this RetentionFilter +func (tr *RetentionFilter) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this RetentionFilter +func (tr *RetentionFilter) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this RetentionFilter +func (tr *RetentionFilter) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this RetentionFilter +func (tr *RetentionFilter) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this RetentionFilter +func (tr *RetentionFilter) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this RetentionFilter +func (tr *RetentionFilter) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this RetentionFilter +func (tr *RetentionFilter) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this RetentionFilter using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *RetentionFilter) LateInitialize(attrs []byte) (bool, error) { + params := &RetentionFilterParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *RetentionFilter) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/apm/v1alpha1/zz_retentionfilter_types.go b/apis/apm/v1alpha1/zz_retentionfilter_types.go new file mode 100755 index 0000000..e9943c9 --- /dev/null +++ b/apis/apm/v1alpha1/zz_retentionfilter_types.go @@ -0,0 +1,182 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type FilterInitParameters struct { + + // following the span search syntax. Defaults to "*". + // The search query - following the span search syntax. Defaults to `"*"`. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterObservation struct { + + // following the span search syntax. Defaults to "*". + // The search query - following the span search syntax. Defaults to `"*"`. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterParameters struct { + + // following the span search syntax. Defaults to "*". + // The search query - following the span search syntax. Defaults to `"*"`. + // +kubebuilder:validation:Optional + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type RetentionFilterInitParameters struct { + + // (Boolean) the status of the retention filter. + // the status of the retention filter. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block, Optional) The spans filter. Spans matching this filter will be indexed and stored. (see below for nested schema) + // The spans filter. Spans matching this filter will be indexed and stored. + Filter *FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // processing-sampling is available. Valid values are spans-sampling-processor. + // The type of the retention filter, currently only spans-processing-sampling is available. Valid values are `spans-sampling-processor`. + FilterType *string `json:"filterType,omitempty" tf:"filter_type,omitempty"` + + // (String) The name of the retention filter. + // The name of the retention filter. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query. + // Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query. + Rate *string `json:"rate,omitempty" tf:"rate,omitempty"` +} + +type RetentionFilterObservation struct { + + // (Boolean) the status of the retention filter. + // the status of the retention filter. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block, Optional) The spans filter. Spans matching this filter will be indexed and stored. (see below for nested schema) + // The spans filter. Spans matching this filter will be indexed and stored. + Filter *FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // processing-sampling is available. Valid values are spans-sampling-processor. + // The type of the retention filter, currently only spans-processing-sampling is available. Valid values are `spans-sampling-processor`. + FilterType *string `json:"filterType,omitempty" tf:"filter_type,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the retention filter. + // The name of the retention filter. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query. + // Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query. + Rate *string `json:"rate,omitempty" tf:"rate,omitempty"` +} + +type RetentionFilterParameters struct { + + // (Boolean) the status of the retention filter. + // the status of the retention filter. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block, Optional) The spans filter. Spans matching this filter will be indexed and stored. (see below for nested schema) + // The spans filter. Spans matching this filter will be indexed and stored. + // +kubebuilder:validation:Optional + Filter *FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // processing-sampling is available. Valid values are spans-sampling-processor. + // The type of the retention filter, currently only spans-processing-sampling is available. Valid values are `spans-sampling-processor`. + // +kubebuilder:validation:Optional + FilterType *string `json:"filterType,omitempty" tf:"filter_type,omitempty"` + + // (String) The name of the retention filter. + // The name of the retention filter. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query. + // Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query. + // +kubebuilder:validation:Optional + Rate *string `json:"rate,omitempty" tf:"rate,omitempty"` +} + +// RetentionFilterSpec defines the desired state of RetentionFilter +type RetentionFilterSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RetentionFilterParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RetentionFilterInitParameters `json:"initProvider,omitempty"` +} + +// RetentionFilterStatus defines the observed state of RetentionFilter. +type RetentionFilterStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RetentionFilterObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// RetentionFilter is the Schema for the RetentionFilters API. The object describing the configuration of the retention filter to create/update. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type RetentionFilter struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.enabled) || (has(self.initProvider) && has(self.initProvider.enabled))",message="spec.forProvider.enabled is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.filterType) || (has(self.initProvider) && has(self.initProvider.filterType))",message="spec.forProvider.filterType is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.rate) || (has(self.initProvider) && has(self.initProvider.rate))",message="spec.forProvider.rate is a required parameter" + Spec RetentionFilterSpec `json:"spec"` + Status RetentionFilterStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RetentionFilterList contains a list of RetentionFilters +type RetentionFilterList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RetentionFilter `json:"items"` +} + +// Repository type metadata. +var ( + RetentionFilter_Kind = "RetentionFilter" + RetentionFilter_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: RetentionFilter_Kind}.String() + RetentionFilter_KindAPIVersion = RetentionFilter_Kind + "." + CRDGroupVersion.String() + RetentionFilter_GroupVersionKind = CRDGroupVersion.WithKind(RetentionFilter_Kind) +) + +func init() { + SchemeBuilder.Register(&RetentionFilter{}, &RetentionFilterList{}) +} diff --git a/apis/apm/v1alpha1/zz_retentionfilterorder_terraformed.go b/apis/apm/v1alpha1/zz_retentionfilterorder_terraformed.go new file mode 100755 index 0000000..a4940d9 --- /dev/null +++ b/apis/apm/v1alpha1/zz_retentionfilterorder_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this RetentionFilterOrder +func (mg *RetentionFilterOrder) GetTerraformResourceType() string { + return "datadog_apm_retention_filter_order" +} + +// GetConnectionDetailsMapping for this RetentionFilterOrder +func (tr *RetentionFilterOrder) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this RetentionFilterOrder +func (tr *RetentionFilterOrder) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this RetentionFilterOrder +func (tr *RetentionFilterOrder) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this RetentionFilterOrder +func (tr *RetentionFilterOrder) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this RetentionFilterOrder +func (tr *RetentionFilterOrder) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this RetentionFilterOrder +func (tr *RetentionFilterOrder) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this RetentionFilterOrder +func (tr *RetentionFilterOrder) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this RetentionFilterOrder +func (tr *RetentionFilterOrder) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this RetentionFilterOrder using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *RetentionFilterOrder) LateInitialize(attrs []byte) (bool, error) { + params := &RetentionFilterOrderParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *RetentionFilterOrder) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/apm/v1alpha1/zz_retentionfilterorder_types.go b/apis/apm/v1alpha1/zz_retentionfilterorder_types.go new file mode 100755 index 0000000..158876f --- /dev/null +++ b/apis/apm/v1alpha1/zz_retentionfilterorder_types.go @@ -0,0 +1,105 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type RetentionFilterOrderInitParameters struct { + + // (List of String) The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order. + // The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order. + FilterIds []*string `json:"filterIds,omitempty" tf:"filter_ids,omitempty"` +} + +type RetentionFilterOrderObservation struct { + + // (List of String) The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order. + // The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order. + FilterIds []*string `json:"filterIds,omitempty" tf:"filter_ids,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type RetentionFilterOrderParameters struct { + + // (List of String) The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order. + // The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order. + // +kubebuilder:validation:Optional + FilterIds []*string `json:"filterIds,omitempty" tf:"filter_ids,omitempty"` +} + +// RetentionFilterOrderSpec defines the desired state of RetentionFilterOrder +type RetentionFilterOrderSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RetentionFilterOrderParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RetentionFilterOrderInitParameters `json:"initProvider,omitempty"` +} + +// RetentionFilterOrderStatus defines the observed state of RetentionFilterOrder. +type RetentionFilterOrderStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RetentionFilterOrderObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// RetentionFilterOrder is the Schema for the RetentionFilterOrders API. Provides a Datadog APM Retention Filters API https://docs.datadoghq.com/api/v2/apm-retention-filters/ resource, which is used to manage Datadog APM retention filters order. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type RetentionFilterOrder struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.filterIds) || (has(self.initProvider) && has(self.initProvider.filterIds))",message="spec.forProvider.filterIds is a required parameter" + Spec RetentionFilterOrderSpec `json:"spec"` + Status RetentionFilterOrderStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RetentionFilterOrderList contains a list of RetentionFilterOrders +type RetentionFilterOrderList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RetentionFilterOrder `json:"items"` +} + +// Repository type metadata. +var ( + RetentionFilterOrder_Kind = "RetentionFilterOrder" + RetentionFilterOrder_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: RetentionFilterOrder_Kind}.String() + RetentionFilterOrder_KindAPIVersion = RetentionFilterOrder_Kind + "." + CRDGroupVersion.String() + RetentionFilterOrder_GroupVersionKind = CRDGroupVersion.WithKind(RetentionFilterOrder_Kind) +) + +func init() { + SchemeBuilder.Register(&RetentionFilterOrder{}, &RetentionFilterOrderList{}) +} diff --git a/apis/cloud/v1alpha1/zz_configurationrule_terraformed.go b/apis/cloud/v1alpha1/zz_configurationrule_terraformed.go new file mode 100755 index 0000000..3ef7228 --- /dev/null +++ b/apis/cloud/v1alpha1/zz_configurationrule_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ConfigurationRule +func (mg *ConfigurationRule) GetTerraformResourceType() string { + return "datadog_cloud_configuration_rule" +} + +// GetConnectionDetailsMapping for this ConfigurationRule +func (tr *ConfigurationRule) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ConfigurationRule +func (tr *ConfigurationRule) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ConfigurationRule +func (tr *ConfigurationRule) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ConfigurationRule +func (tr *ConfigurationRule) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ConfigurationRule +func (tr *ConfigurationRule) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ConfigurationRule +func (tr *ConfigurationRule) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ConfigurationRule +func (tr *ConfigurationRule) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ConfigurationRule +func (tr *ConfigurationRule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ConfigurationRule using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ConfigurationRule) LateInitialize(attrs []byte) (bool, error) { + params := &ConfigurationRuleParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ConfigurationRule) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/cloud/v1alpha1/zz_configurationrule_types.go b/apis/cloud/v1alpha1/zz_configurationrule_types.go new file mode 100755 index 0000000..d7e3638 --- /dev/null +++ b/apis/cloud/v1alpha1/zz_configurationrule_types.go @@ -0,0 +1,275 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ConfigurationRuleInitParameters struct { + + // (Boolean) Whether the cloud configuration rule is enabled. + // Whether the cloud configuration rule is enabled. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. Defaults to empty list (see below for nested schema) + // Additional queries to filter matched events before they are processed. Defaults to empty list + Filter []FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (List of String) Fields to group by when generating signals, e.g. @resource. Defaults to empty list. + // Fields to group by when generating signals, e.g. @resource. Defaults to empty list. + GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (String) The message associated to the rule that will be shown in findings and signals. + // The message associated to the rule that will be shown in findings and signals. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The name of the cloud configuration rule. + // The name of the cloud configuration rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for signals. Defaults to empty list. + // Notification targets for signals. Defaults to empty list. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Policy written in Rego format. + // Policy written in Rego format. + Policy *string `json:"policy,omitempty" tf:"policy,omitempty"` + + // (List of String) Related resource types to be checked by the rule. Defaults to empty list. + // Related resource types to be checked by the rule. Defaults to empty list. + RelatedResourceTypes []*string `json:"relatedResourceTypes,omitempty" tf:"related_resource_types,omitempty"` + + // (String) Main resource type to be checked by the rule. + // Main resource type to be checked by the rule. + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + + // (String) Severity of the rule and associated signals. Valid values are info, low, medium, high, critical. + // Severity of the rule and associated signals. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Severity *string `json:"severity,omitempty" tf:"severity,omitempty"` + + // (List of String) Tags of the rule, propagated to findings and signals. Defaults to empty list. + // Tags of the rule, propagated to findings and signals. Defaults to empty list. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type ConfigurationRuleObservation struct { + + // (Boolean) Whether the cloud configuration rule is enabled. + // Whether the cloud configuration rule is enabled. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. Defaults to empty list (see below for nested schema) + // Additional queries to filter matched events before they are processed. Defaults to empty list + Filter []FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (List of String) Fields to group by when generating signals, e.g. @resource. Defaults to empty list. + // Fields to group by when generating signals, e.g. @resource. Defaults to empty list. + GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The message associated to the rule that will be shown in findings and signals. + // The message associated to the rule that will be shown in findings and signals. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The name of the cloud configuration rule. + // The name of the cloud configuration rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for signals. Defaults to empty list. + // Notification targets for signals. Defaults to empty list. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Policy written in Rego format. + // Policy written in Rego format. + Policy *string `json:"policy,omitempty" tf:"policy,omitempty"` + + // (List of String) Related resource types to be checked by the rule. Defaults to empty list. + // Related resource types to be checked by the rule. Defaults to empty list. + RelatedResourceTypes []*string `json:"relatedResourceTypes,omitempty" tf:"related_resource_types,omitempty"` + + // (String) Main resource type to be checked by the rule. + // Main resource type to be checked by the rule. + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + + // (String) Severity of the rule and associated signals. Valid values are info, low, medium, high, critical. + // Severity of the rule and associated signals. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Severity *string `json:"severity,omitempty" tf:"severity,omitempty"` + + // (List of String) Tags of the rule, propagated to findings and signals. Defaults to empty list. + // Tags of the rule, propagated to findings and signals. Defaults to empty list. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type ConfigurationRuleParameters struct { + + // (Boolean) Whether the cloud configuration rule is enabled. + // Whether the cloud configuration rule is enabled. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. Defaults to empty list (see below for nested schema) + // Additional queries to filter matched events before they are processed. Defaults to empty list + // +kubebuilder:validation:Optional + Filter []FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (List of String) Fields to group by when generating signals, e.g. @resource. Defaults to empty list. + // Fields to group by when generating signals, e.g. @resource. Defaults to empty list. + // +kubebuilder:validation:Optional + GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (String) The message associated to the rule that will be shown in findings and signals. + // The message associated to the rule that will be shown in findings and signals. + // +kubebuilder:validation:Optional + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The name of the cloud configuration rule. + // The name of the cloud configuration rule. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for signals. Defaults to empty list. + // Notification targets for signals. Defaults to empty list. + // +kubebuilder:validation:Optional + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Policy written in Rego format. + // Policy written in Rego format. + // +kubebuilder:validation:Optional + Policy *string `json:"policy,omitempty" tf:"policy,omitempty"` + + // (List of String) Related resource types to be checked by the rule. Defaults to empty list. + // Related resource types to be checked by the rule. Defaults to empty list. + // +kubebuilder:validation:Optional + RelatedResourceTypes []*string `json:"relatedResourceTypes,omitempty" tf:"related_resource_types,omitempty"` + + // (String) Main resource type to be checked by the rule. + // Main resource type to be checked by the rule. + // +kubebuilder:validation:Optional + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + + // (String) Severity of the rule and associated signals. Valid values are info, low, medium, high, critical. + // Severity of the rule and associated signals. Valid values are `info`, `low`, `medium`, `high`, `critical`. + // +kubebuilder:validation:Optional + Severity *string `json:"severity,omitempty" tf:"severity,omitempty"` + + // (List of String) Tags of the rule, propagated to findings and signals. Defaults to empty list. + // Tags of the rule, propagated to findings and signals. Defaults to empty list. + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type FilterInitParameters struct { + + // (String) The type of filtering action. Valid values are require, suppress. + // The type of filtering action. Valid values are `require`, `suppress`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (String) Query for selecting logs to apply the filtering action. + // Query for selecting logs to apply the filtering action. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterObservation struct { + + // (String) The type of filtering action. Valid values are require, suppress. + // The type of filtering action. Valid values are `require`, `suppress`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (String) Query for selecting logs to apply the filtering action. + // Query for selecting logs to apply the filtering action. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterParameters struct { + + // (String) The type of filtering action. Valid values are require, suppress. + // The type of filtering action. Valid values are `require`, `suppress`. + // +kubebuilder:validation:Optional + Action *string `json:"action" tf:"action,omitempty"` + + // (String) Query for selecting logs to apply the filtering action. + // Query for selecting logs to apply the filtering action. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +// ConfigurationRuleSpec defines the desired state of ConfigurationRule +type ConfigurationRuleSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ConfigurationRuleParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ConfigurationRuleInitParameters `json:"initProvider,omitempty"` +} + +// ConfigurationRuleStatus defines the observed state of ConfigurationRule. +type ConfigurationRuleStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ConfigurationRuleObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ConfigurationRule is the Schema for the ConfigurationRules API. Provides a Datadog Cloud Configuration Rule resource. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ConfigurationRule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.enabled) || (has(self.initProvider) && has(self.initProvider.enabled))",message="spec.forProvider.enabled is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.message) || (has(self.initProvider) && has(self.initProvider.message))",message="spec.forProvider.message is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.policy) || (has(self.initProvider) && has(self.initProvider.policy))",message="spec.forProvider.policy is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceType) || (has(self.initProvider) && has(self.initProvider.resourceType))",message="spec.forProvider.resourceType is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.severity) || (has(self.initProvider) && has(self.initProvider.severity))",message="spec.forProvider.severity is a required parameter" + Spec ConfigurationRuleSpec `json:"spec"` + Status ConfigurationRuleStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ConfigurationRuleList contains a list of ConfigurationRules +type ConfigurationRuleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ConfigurationRule `json:"items"` +} + +// Repository type metadata. +var ( + ConfigurationRule_Kind = "ConfigurationRule" + ConfigurationRule_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ConfigurationRule_Kind}.String() + ConfigurationRule_KindAPIVersion = ConfigurationRule_Kind + "." + CRDGroupVersion.String() + ConfigurationRule_GroupVersionKind = CRDGroupVersion.WithKind(ConfigurationRule_Kind) +) + +func init() { + SchemeBuilder.Register(&ConfigurationRule{}, &ConfigurationRuleList{}) +} diff --git a/apis/cloud/v1alpha1/zz_generated.conversion_hubs.go b/apis/cloud/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..cc467ba --- /dev/null +++ b/apis/cloud/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *ConfigurationRule) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *WorkloadSecurityAgentRule) Hub() {} diff --git a/apis/cloud/v1alpha1/zz_generated.deepcopy.go b/apis/cloud/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..ab03d64 --- /dev/null +++ b/apis/cloud/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,679 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationRule) DeepCopyInto(out *ConfigurationRule) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationRule. +func (in *ConfigurationRule) DeepCopy() *ConfigurationRule { + if in == nil { + return nil + } + out := new(ConfigurationRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigurationRule) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationRuleInitParameters) DeepCopyInto(out *ConfigurationRuleInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Policy != nil { + in, out := &in.Policy, &out.Policy + *out = new(string) + **out = **in + } + if in.RelatedResourceTypes != nil { + in, out := &in.RelatedResourceTypes, &out.RelatedResourceTypes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } + if in.Severity != nil { + in, out := &in.Severity, &out.Severity + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationRuleInitParameters. +func (in *ConfigurationRuleInitParameters) DeepCopy() *ConfigurationRuleInitParameters { + if in == nil { + return nil + } + out := new(ConfigurationRuleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationRuleList) DeepCopyInto(out *ConfigurationRuleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigurationRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationRuleList. +func (in *ConfigurationRuleList) DeepCopy() *ConfigurationRuleList { + if in == nil { + return nil + } + out := new(ConfigurationRuleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigurationRuleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationRuleObservation) DeepCopyInto(out *ConfigurationRuleObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Policy != nil { + in, out := &in.Policy, &out.Policy + *out = new(string) + **out = **in + } + if in.RelatedResourceTypes != nil { + in, out := &in.RelatedResourceTypes, &out.RelatedResourceTypes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } + if in.Severity != nil { + in, out := &in.Severity, &out.Severity + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationRuleObservation. +func (in *ConfigurationRuleObservation) DeepCopy() *ConfigurationRuleObservation { + if in == nil { + return nil + } + out := new(ConfigurationRuleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationRuleParameters) DeepCopyInto(out *ConfigurationRuleParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Policy != nil { + in, out := &in.Policy, &out.Policy + *out = new(string) + **out = **in + } + if in.RelatedResourceTypes != nil { + in, out := &in.RelatedResourceTypes, &out.RelatedResourceTypes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } + if in.Severity != nil { + in, out := &in.Severity, &out.Severity + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationRuleParameters. +func (in *ConfigurationRuleParameters) DeepCopy() *ConfigurationRuleParameters { + if in == nil { + return nil + } + out := new(ConfigurationRuleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationRuleSpec) DeepCopyInto(out *ConfigurationRuleSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationRuleSpec. +func (in *ConfigurationRuleSpec) DeepCopy() *ConfigurationRuleSpec { + if in == nil { + return nil + } + out := new(ConfigurationRuleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationRuleStatus) DeepCopyInto(out *ConfigurationRuleStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationRuleStatus. +func (in *ConfigurationRuleStatus) DeepCopy() *ConfigurationRuleStatus { + if in == nil { + return nil + } + out := new(ConfigurationRuleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters) DeepCopyInto(out *FilterInitParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters. +func (in *FilterInitParameters) DeepCopy() *FilterInitParameters { + if in == nil { + return nil + } + out := new(FilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation) DeepCopyInto(out *FilterObservation) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation. +func (in *FilterObservation) DeepCopy() *FilterObservation { + if in == nil { + return nil + } + out := new(FilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters) DeepCopyInto(out *FilterParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters. +func (in *FilterParameters) DeepCopy() *FilterParameters { + if in == nil { + return nil + } + out := new(FilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadSecurityAgentRule) DeepCopyInto(out *WorkloadSecurityAgentRule) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadSecurityAgentRule. +func (in *WorkloadSecurityAgentRule) DeepCopy() *WorkloadSecurityAgentRule { + if in == nil { + return nil + } + out := new(WorkloadSecurityAgentRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *WorkloadSecurityAgentRule) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadSecurityAgentRuleInitParameters) DeepCopyInto(out *WorkloadSecurityAgentRuleInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadSecurityAgentRuleInitParameters. +func (in *WorkloadSecurityAgentRuleInitParameters) DeepCopy() *WorkloadSecurityAgentRuleInitParameters { + if in == nil { + return nil + } + out := new(WorkloadSecurityAgentRuleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadSecurityAgentRuleList) DeepCopyInto(out *WorkloadSecurityAgentRuleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]WorkloadSecurityAgentRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadSecurityAgentRuleList. +func (in *WorkloadSecurityAgentRuleList) DeepCopy() *WorkloadSecurityAgentRuleList { + if in == nil { + return nil + } + out := new(WorkloadSecurityAgentRuleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *WorkloadSecurityAgentRuleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadSecurityAgentRuleObservation) DeepCopyInto(out *WorkloadSecurityAgentRuleObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadSecurityAgentRuleObservation. +func (in *WorkloadSecurityAgentRuleObservation) DeepCopy() *WorkloadSecurityAgentRuleObservation { + if in == nil { + return nil + } + out := new(WorkloadSecurityAgentRuleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadSecurityAgentRuleParameters) DeepCopyInto(out *WorkloadSecurityAgentRuleParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadSecurityAgentRuleParameters. +func (in *WorkloadSecurityAgentRuleParameters) DeepCopy() *WorkloadSecurityAgentRuleParameters { + if in == nil { + return nil + } + out := new(WorkloadSecurityAgentRuleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadSecurityAgentRuleSpec) DeepCopyInto(out *WorkloadSecurityAgentRuleSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadSecurityAgentRuleSpec. +func (in *WorkloadSecurityAgentRuleSpec) DeepCopy() *WorkloadSecurityAgentRuleSpec { + if in == nil { + return nil + } + out := new(WorkloadSecurityAgentRuleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadSecurityAgentRuleStatus) DeepCopyInto(out *WorkloadSecurityAgentRuleStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadSecurityAgentRuleStatus. +func (in *WorkloadSecurityAgentRuleStatus) DeepCopy() *WorkloadSecurityAgentRuleStatus { + if in == nil { + return nil + } + out := new(WorkloadSecurityAgentRuleStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/cloud/v1alpha1/zz_generated.managed.go b/apis/cloud/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..f16b4ca --- /dev/null +++ b/apis/cloud/v1alpha1/zz_generated.managed.go @@ -0,0 +1,128 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this ConfigurationRule. +func (mg *ConfigurationRule) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ConfigurationRule. +func (mg *ConfigurationRule) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ConfigurationRule. +func (mg *ConfigurationRule) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ConfigurationRule. +func (mg *ConfigurationRule) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ConfigurationRule. +func (mg *ConfigurationRule) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ConfigurationRule. +func (mg *ConfigurationRule) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ConfigurationRule. +func (mg *ConfigurationRule) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ConfigurationRule. +func (mg *ConfigurationRule) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ConfigurationRule. +func (mg *ConfigurationRule) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ConfigurationRule. +func (mg *ConfigurationRule) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ConfigurationRule. +func (mg *ConfigurationRule) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ConfigurationRule. +func (mg *ConfigurationRule) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this WorkloadSecurityAgentRule. +func (mg *WorkloadSecurityAgentRule) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/cloud/v1alpha1/zz_generated.managedlist.go b/apis/cloud/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..9c12db3 --- /dev/null +++ b/apis/cloud/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,26 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ConfigurationRuleList. +func (l *ConfigurationRuleList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this WorkloadSecurityAgentRuleList. +func (l *WorkloadSecurityAgentRuleList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/cloud/v1alpha1/zz_groupversion_info.go b/apis/cloud/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..577ecc8 --- /dev/null +++ b/apis/cloud/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=cloud.datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "cloud.datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_terraformed.go b/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_terraformed.go new file mode 100755 index 0000000..52d696c --- /dev/null +++ b/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this WorkloadSecurityAgentRule +func (mg *WorkloadSecurityAgentRule) GetTerraformResourceType() string { + return "datadog_cloud_workload_security_agent_rule" +} + +// GetConnectionDetailsMapping for this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this WorkloadSecurityAgentRule +func (tr *WorkloadSecurityAgentRule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this WorkloadSecurityAgentRule using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *WorkloadSecurityAgentRule) LateInitialize(attrs []byte) (bool, error) { + params := &WorkloadSecurityAgentRuleParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *WorkloadSecurityAgentRule) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_types.go b/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_types.go new file mode 100755 index 0000000..9df599e --- /dev/null +++ b/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_types.go @@ -0,0 +1,145 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type WorkloadSecurityAgentRuleInitParameters struct { + + // (String) The description of the Agent rule. Defaults to "". + // The description of the Agent rule. Defaults to `""`. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) Whether the Agent rule is enabled. Defaults to true. + // Whether the Agent rule is enabled. Defaults to `true`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (String) The SECL expression of the Agent rule. + // The SECL expression of the Agent rule. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) The name of the Agent rule. + // The name of the Agent rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type WorkloadSecurityAgentRuleObservation struct { + + // (String) The description of the Agent rule. Defaults to "". + // The description of the Agent rule. Defaults to `""`. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) Whether the Agent rule is enabled. Defaults to true. + // Whether the Agent rule is enabled. Defaults to `true`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (String) The SECL expression of the Agent rule. + // The SECL expression of the Agent rule. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the Agent rule. + // The name of the Agent rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type WorkloadSecurityAgentRuleParameters struct { + + // (String) The description of the Agent rule. Defaults to "". + // The description of the Agent rule. Defaults to `""`. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) Whether the Agent rule is enabled. Defaults to true. + // Whether the Agent rule is enabled. Defaults to `true`. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (String) The SECL expression of the Agent rule. + // The SECL expression of the Agent rule. + // +kubebuilder:validation:Optional + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) The name of the Agent rule. + // The name of the Agent rule. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// WorkloadSecurityAgentRuleSpec defines the desired state of WorkloadSecurityAgentRule +type WorkloadSecurityAgentRuleSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider WorkloadSecurityAgentRuleParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider WorkloadSecurityAgentRuleInitParameters `json:"initProvider,omitempty"` +} + +// WorkloadSecurityAgentRuleStatus defines the observed state of WorkloadSecurityAgentRule. +type WorkloadSecurityAgentRuleStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider WorkloadSecurityAgentRuleObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// WorkloadSecurityAgentRule is the Schema for the WorkloadSecurityAgentRules API. Provides a Datadog Cloud Workload Security Agent Rule API resource for agent rules. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type WorkloadSecurityAgentRule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.expression) || (has(self.initProvider) && has(self.initProvider.expression))",message="spec.forProvider.expression is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec WorkloadSecurityAgentRuleSpec `json:"spec"` + Status WorkloadSecurityAgentRuleStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// WorkloadSecurityAgentRuleList contains a list of WorkloadSecurityAgentRules +type WorkloadSecurityAgentRuleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []WorkloadSecurityAgentRule `json:"items"` +} + +// Repository type metadata. +var ( + WorkloadSecurityAgentRule_Kind = "WorkloadSecurityAgentRule" + WorkloadSecurityAgentRule_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: WorkloadSecurityAgentRule_Kind}.String() + WorkloadSecurityAgentRule_KindAPIVersion = WorkloadSecurityAgentRule_Kind + "." + CRDGroupVersion.String() + WorkloadSecurityAgentRule_GroupVersionKind = CRDGroupVersion.WithKind(WorkloadSecurityAgentRule_Kind) +) + +func init() { + SchemeBuilder.Register(&WorkloadSecurityAgentRule{}, &WorkloadSecurityAgentRuleList{}) +} diff --git a/apis/datadog/v1alpha1/zz_apikey_terraformed.go b/apis/datadog/v1alpha1/zz_apikey_terraformed.go new file mode 100755 index 0000000..327aac8 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_apikey_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this APIKey +func (mg *APIKey) GetTerraformResourceType() string { + return "datadog_api_key" +} + +// GetConnectionDetailsMapping for this APIKey +func (tr *APIKey) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"key": "status.atProvider.key"} +} + +// GetObservation of this APIKey +func (tr *APIKey) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this APIKey +func (tr *APIKey) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this APIKey +func (tr *APIKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this APIKey +func (tr *APIKey) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this APIKey +func (tr *APIKey) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this APIKey +func (tr *APIKey) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this APIKey +func (tr *APIKey) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this APIKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *APIKey) LateInitialize(attrs []byte) (bool, error) { + params := &APIKeyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *APIKey) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/null/v1alpha1/zz_resource_types.go b/apis/datadog/v1alpha1/zz_apikey_types.go similarity index 50% rename from apis/null/v1alpha1/zz_resource_types.go rename to apis/datadog/v1alpha1/zz_apikey_types.go index 7801a3b..77af9e9 100755 --- a/apis/null/v1alpha1/zz_resource_types.go +++ b/apis/datadog/v1alpha1/zz_apikey_types.go @@ -17,30 +17,35 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type ResourceInitParameters struct { +type APIKeyInitParameters struct { - // A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners. - Triggers map[string]*string `json:"triggers,omitempty" tf:"triggers,omitempty"` + // (String) Name for API Key. + // Name for API Key. + Name *string `json:"name,omitempty" tf:"name,omitempty"` } -type ResourceObservation struct { +type APIKeyObservation struct { + + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` - // A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners. - Triggers map[string]*string `json:"triggers,omitempty" tf:"triggers,omitempty"` + // (String) Name for API Key. + // Name for API Key. + Name *string `json:"name,omitempty" tf:"name,omitempty"` } -type ResourceParameters struct { +type APIKeyParameters struct { - // A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners. + // (String) Name for API Key. + // Name for API Key. // +kubebuilder:validation:Optional - Triggers map[string]*string `json:"triggers,omitempty" tf:"triggers,omitempty"` + Name *string `json:"name,omitempty" tf:"name,omitempty"` } -// ResourceSpec defines the desired state of Resource -type ResourceSpec struct { +// APIKeySpec defines the desired state of APIKey +type APIKeySpec struct { v1.ResourceSpec `json:",inline"` - ForProvider ResourceParameters `json:"forProvider"` + ForProvider APIKeyParameters `json:"forProvider"` // THIS IS A BETA FIELD. It will be honored // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception @@ -51,48 +56,50 @@ type ResourceSpec struct { // required on creation, but we do not desire to update them after creation, // for example because of an external controller is managing them, like an // autoscaler. - InitProvider ResourceInitParameters `json:"initProvider,omitempty"` + InitProvider APIKeyInitParameters `json:"initProvider,omitempty"` } -// ResourceStatus defines the observed state of Resource. -type ResourceStatus struct { +// APIKeyStatus defines the observed state of APIKey. +type APIKeyStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider ResourceObservation `json:"atProvider,omitempty"` + AtProvider APIKeyObservation `json:"atProvider,omitempty"` } // +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion -// Resource is the Schema for the Resources API. The null_resource resource implements the standard resource lifecycle but takes no further action. The triggers argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced. +// APIKey is the Schema for the APIKeys API. Provides a Datadog API Key resource. This can be used to create and manage Datadog API Keys. // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" -// +kubebuilder:subresource:status -// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,template} -type Resource struct { +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type APIKey struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec ResourceSpec `json:"spec"` - Status ResourceStatus `json:"status,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec APIKeySpec `json:"spec"` + Status APIKeyStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// ResourceList contains a list of Resources -type ResourceList struct { +// APIKeyList contains a list of APIKeys +type APIKeyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []Resource `json:"items"` + Items []APIKey `json:"items"` } // Repository type metadata. var ( - Resource_Kind = "Resource" - Resource_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Resource_Kind}.String() - Resource_KindAPIVersion = Resource_Kind + "." + CRDGroupVersion.String() - Resource_GroupVersionKind = CRDGroupVersion.WithKind(Resource_Kind) + APIKey_Kind = "APIKey" + APIKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: APIKey_Kind}.String() + APIKey_KindAPIVersion = APIKey_Kind + "." + CRDGroupVersion.String() + APIKey_GroupVersionKind = CRDGroupVersion.WithKind(APIKey_Kind) ) func init() { - SchemeBuilder.Register(&Resource{}, &ResourceList{}) + SchemeBuilder.Register(&APIKey{}, &APIKeyList{}) } diff --git a/apis/datadog/v1alpha1/zz_appkey_terraformed.go b/apis/datadog/v1alpha1/zz_appkey_terraformed.go new file mode 100755 index 0000000..ed2db93 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_appkey_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this AppKey +func (mg *AppKey) GetTerraformResourceType() string { + return "datadog_application_key" +} + +// GetConnectionDetailsMapping for this AppKey +func (tr *AppKey) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"key": "status.atProvider.key"} +} + +// GetObservation of this AppKey +func (tr *AppKey) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this AppKey +func (tr *AppKey) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this AppKey +func (tr *AppKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this AppKey +func (tr *AppKey) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this AppKey +func (tr *AppKey) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this AppKey +func (tr *AppKey) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this AppKey +func (tr *AppKey) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this AppKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *AppKey) LateInitialize(attrs []byte) (bool, error) { + params := &AppKeyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *AppKey) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_appkey_types.go b/apis/datadog/v1alpha1/zz_appkey_types.go new file mode 100755 index 0000000..cf3b1ec --- /dev/null +++ b/apis/datadog/v1alpha1/zz_appkey_types.go @@ -0,0 +1,105 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AppKeyInitParameters struct { + + // (String) Name for Application Key. + // Name for Application Key. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type AppKeyObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name for Application Key. + // Name for Application Key. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type AppKeyParameters struct { + + // (String) Name for Application Key. + // Name for Application Key. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// AppKeySpec defines the desired state of AppKey +type AppKeySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AppKeyParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AppKeyInitParameters `json:"initProvider,omitempty"` +} + +// AppKeyStatus defines the observed state of AppKey. +type AppKeyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AppKeyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// AppKey is the Schema for the AppKeys API. Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type AppKey struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec AppKeySpec `json:"spec"` + Status AppKeyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AppKeyList contains a list of AppKeys +type AppKeyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []AppKey `json:"items"` +} + +// Repository type metadata. +var ( + AppKey_Kind = "AppKey" + AppKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AppKey_Kind}.String() + AppKey_KindAPIVersion = AppKey_Kind + "." + CRDGroupVersion.String() + AppKey_GroupVersionKind = CRDGroupVersion.WithKind(AppKey_Kind) +) + +func init() { + SchemeBuilder.Register(&AppKey{}, &AppKeyList{}) +} diff --git a/apis/datadog/v1alpha1/zz_authnmapping_terraformed.go b/apis/datadog/v1alpha1/zz_authnmapping_terraformed.go new file mode 100755 index 0000000..3e364a1 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_authnmapping_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this AuthnMapping +func (mg *AuthnMapping) GetTerraformResourceType() string { + return "datadog_authn_mapping" +} + +// GetConnectionDetailsMapping for this AuthnMapping +func (tr *AuthnMapping) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this AuthnMapping +func (tr *AuthnMapping) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this AuthnMapping +func (tr *AuthnMapping) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this AuthnMapping +func (tr *AuthnMapping) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this AuthnMapping +func (tr *AuthnMapping) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this AuthnMapping +func (tr *AuthnMapping) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this AuthnMapping +func (tr *AuthnMapping) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this AuthnMapping +func (tr *AuthnMapping) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this AuthnMapping using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *AuthnMapping) LateInitialize(attrs []byte) (bool, error) { + params := &AuthnMappingParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *AuthnMapping) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_authnmapping_types.go b/apis/datadog/v1alpha1/zz_authnmapping_types.go new file mode 100755 index 0000000..97b20fd --- /dev/null +++ b/apis/datadog/v1alpha1/zz_authnmapping_types.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AuthnMappingInitParameters struct { + + // (String) Identity provider key. + // Identity provider key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // (String) The ID of a role to attach to all users with the corresponding key and value. + // The ID of a role to attach to all users with the corresponding key and value. + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + // (String) Identity provider value. + // Identity provider value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type AuthnMappingObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Identity provider key. + // Identity provider key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // (String) The ID of a role to attach to all users with the corresponding key and value. + // The ID of a role to attach to all users with the corresponding key and value. + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + // (String) Identity provider value. + // Identity provider value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type AuthnMappingParameters struct { + + // (String) Identity provider key. + // Identity provider key. + // +kubebuilder:validation:Optional + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // (String) The ID of a role to attach to all users with the corresponding key and value. + // The ID of a role to attach to all users with the corresponding key and value. + // +kubebuilder:validation:Optional + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + // (String) Identity provider value. + // Identity provider value. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +// AuthnMappingSpec defines the desired state of AuthnMapping +type AuthnMappingSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AuthnMappingParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AuthnMappingInitParameters `json:"initProvider,omitempty"` +} + +// AuthnMappingStatus defines the observed state of AuthnMapping. +type AuthnMappingStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AuthnMappingObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// AuthnMapping is the Schema for the AuthnMappings API. Provides a Datadog AuthN Mappings resource. This feature lets you automatically assign roles to users based on their SAML attributes. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type AuthnMapping struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.key) || (has(self.initProvider) && has(self.initProvider.key))",message="spec.forProvider.key is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.role) || (has(self.initProvider) && has(self.initProvider.role))",message="spec.forProvider.role is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.value) || (has(self.initProvider) && has(self.initProvider.value))",message="spec.forProvider.value is a required parameter" + Spec AuthnMappingSpec `json:"spec"` + Status AuthnMappingStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AuthnMappingList contains a list of AuthnMappings +type AuthnMappingList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []AuthnMapping `json:"items"` +} + +// Repository type metadata. +var ( + AuthnMapping_Kind = "AuthnMapping" + AuthnMapping_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AuthnMapping_Kind}.String() + AuthnMapping_KindAPIVersion = AuthnMapping_Kind + "." + CRDGroupVersion.String() + AuthnMapping_GroupVersionKind = CRDGroupVersion.WithKind(AuthnMapping_Kind) +) + +func init() { + SchemeBuilder.Register(&AuthnMapping{}, &AuthnMappingList{}) +} diff --git a/apis/datadog/v1alpha1/zz_childorganization_terraformed.go b/apis/datadog/v1alpha1/zz_childorganization_terraformed.go new file mode 100755 index 0000000..7656267 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_childorganization_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ChildOrganization +func (mg *ChildOrganization) GetTerraformResourceType() string { + return "datadog_child_organization" +} + +// GetConnectionDetailsMapping for this ChildOrganization +func (tr *ChildOrganization) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ChildOrganization +func (tr *ChildOrganization) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ChildOrganization +func (tr *ChildOrganization) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ChildOrganization +func (tr *ChildOrganization) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ChildOrganization +func (tr *ChildOrganization) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ChildOrganization +func (tr *ChildOrganization) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ChildOrganization +func (tr *ChildOrganization) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ChildOrganization +func (tr *ChildOrganization) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ChildOrganization using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ChildOrganization) LateInitialize(attrs []byte) (bool, error) { + params := &ChildOrganizationParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ChildOrganization) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_childorganization_types.go b/apis/datadog/v1alpha1/zz_childorganization_types.go new file mode 100755 index 0000000..2da52e4 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_childorganization_types.go @@ -0,0 +1,270 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ApplicationKeyInitParameters struct { +} + +type ApplicationKeyObservation struct { + + // (String) + Hash *string `json:"hash,omitempty" tf:"hash,omitempty"` + + // (String) Name for Child Organization after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) + Owner *string `json:"owner,omitempty" tf:"owner,omitempty"` +} + +type ApplicationKeyParameters struct { +} + +type ChildOrganizationAPIKeyInitParameters struct { +} + +type ChildOrganizationAPIKeyObservation struct { + + // (String) + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // (String) Name for Child Organization after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type ChildOrganizationAPIKeyParameters struct { +} + +type ChildOrganizationInitParameters struct { + + // (String) Name for Child Organization after creation. + // Name for Child Organization after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type ChildOrganizationObservation struct { + + // (List of Object) Datadog API key. (see below for nested schema) + // Datadog API key. + APIKey []ChildOrganizationAPIKeyObservation `json:"apiKey,omitempty" tf:"api_key,omitempty"` + + // (List of Object) An application key with its associated metadata. (see below for nested schema) + // An application key with its associated metadata. + ApplicationKey []ApplicationKeyObservation `json:"applicationKey,omitempty" tf:"application_key,omitempty"` + + // (String) Description of the organization. + // Description of the organization. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name for Child Organization after creation. + // Name for Child Organization after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The public_id of the organization you are operating within. + // The `public_id` of the organization you are operating within. + PublicID *string `json:"publicId,omitempty" tf:"public_id,omitempty"` + + // (List of Object) Organization settings (see below for nested schema) + // Organization settings + Settings []SettingsObservation `json:"settings,omitempty" tf:"settings,omitempty"` + + // (List of Object) Information about a user (see below for nested schema) + // Information about a user + User []UserObservation `json:"user,omitempty" tf:"user,omitempty"` +} + +type ChildOrganizationParameters struct { + + // (String) Name for Child Organization after creation. + // Name for Child Organization after creation. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type SAMLAutocreateUsersDomainsInitParameters struct { +} + +type SAMLAutocreateUsersDomainsObservation struct { + + // (List of String) + Domains []*string `json:"domains,omitempty" tf:"domains,omitempty"` + + // (Boolean) + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SAMLAutocreateUsersDomainsParameters struct { +} + +type SAMLIdpInitiatedLoginInitParameters struct { +} + +type SAMLIdpInitiatedLoginObservation struct { + + // (Boolean) + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SAMLIdpInitiatedLoginParameters struct { +} + +type SAMLInitParameters struct { +} + +type SAMLObservation struct { + + // (Boolean) + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SAMLParameters struct { +} + +type SAMLStrictModeInitParameters struct { +} + +type SAMLStrictModeObservation struct { + + // (Boolean) + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SAMLStrictModeParameters struct { +} + +type SettingsInitParameters struct { +} + +type SettingsObservation struct { + + // (Boolean) + PrivateWidgetShare *bool `json:"privateWidgetShare,omitempty" tf:"private_widget_share,omitempty"` + + // (List of Object) (see below for nested schema) + SAML []SAMLObservation `json:"saml,omitempty" tf:"saml,omitempty"` + + // (String) + SAMLAutocreateAccessRole *string `json:"samlAutocreateAccessRole,omitempty" tf:"saml_autocreate_access_role,omitempty"` + + // (List of Object) (see below for nested schema) + SAMLAutocreateUsersDomains []SAMLAutocreateUsersDomainsObservation `json:"samlAutocreateUsersDomains,omitempty" tf:"saml_autocreate_users_domains,omitempty"` + + // (Boolean) + SAMLCanBeEnabled *bool `json:"samlCanBeEnabled,omitempty" tf:"saml_can_be_enabled,omitempty"` + + // (String) + SAMLIdpEndpoint *string `json:"samlIdpEndpoint,omitempty" tf:"saml_idp_endpoint,omitempty"` + + // (List of Object) (see below for nested schema) + SAMLIdpInitiatedLogin []SAMLIdpInitiatedLoginObservation `json:"samlIdpInitiatedLogin,omitempty" tf:"saml_idp_initiated_login,omitempty"` + + // (Boolean) + SAMLIdpMetadataUploaded *bool `json:"samlIdpMetadataUploaded,omitempty" tf:"saml_idp_metadata_uploaded,omitempty"` + + // (String) + SAMLLoginURL *string `json:"samlLoginUrl,omitempty" tf:"saml_login_url,omitempty"` + + // (List of Object) (see below for nested schema) + SAMLStrictMode []SAMLStrictModeObservation `json:"samlStrictMode,omitempty" tf:"saml_strict_mode,omitempty"` +} + +type SettingsParameters struct { +} + +type UserInitParameters struct { +} + +type UserObservation struct { + + // (String) + AccessRole *string `json:"accessRole,omitempty" tf:"access_role,omitempty"` + + // (String) + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) Name for Child Organization after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type UserParameters struct { +} + +// ChildOrganizationSpec defines the desired state of ChildOrganization +type ChildOrganizationSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ChildOrganizationParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ChildOrganizationInitParameters `json:"initProvider,omitempty"` +} + +// ChildOrganizationStatus defines the observed state of ChildOrganization. +type ChildOrganizationStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ChildOrganizationObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ChildOrganization is the Schema for the ChildOrganizations API. Provides a Datadog Child Organization resource. This can be used to create Datadog Child Organizations. To manage created organization use datadog_organization_settings. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ChildOrganization struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec ChildOrganizationSpec `json:"spec"` + Status ChildOrganizationStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ChildOrganizationList contains a list of ChildOrganizations +type ChildOrganizationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ChildOrganization `json:"items"` +} + +// Repository type metadata. +var ( + ChildOrganization_Kind = "ChildOrganization" + ChildOrganization_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ChildOrganization_Kind}.String() + ChildOrganization_KindAPIVersion = ChildOrganization_Kind + "." + CRDGroupVersion.String() + ChildOrganization_GroupVersionKind = CRDGroupVersion.WithKind(ChildOrganization_Kind) +) + +func init() { + SchemeBuilder.Register(&ChildOrganization{}, &ChildOrganizationList{}) +} diff --git a/apis/datadog/v1alpha1/zz_dashboardjson_terraformed.go b/apis/datadog/v1alpha1/zz_dashboardjson_terraformed.go new file mode 100755 index 0000000..9001e8a --- /dev/null +++ b/apis/datadog/v1alpha1/zz_dashboardjson_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this DashboardJSON +func (mg *DashboardJSON) GetTerraformResourceType() string { + return "datadog_dashboard_json" +} + +// GetConnectionDetailsMapping for this DashboardJSON +func (tr *DashboardJSON) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this DashboardJSON +func (tr *DashboardJSON) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this DashboardJSON +func (tr *DashboardJSON) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this DashboardJSON +func (tr *DashboardJSON) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this DashboardJSON +func (tr *DashboardJSON) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this DashboardJSON +func (tr *DashboardJSON) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this DashboardJSON +func (tr *DashboardJSON) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this DashboardJSON +func (tr *DashboardJSON) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this DashboardJSON using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *DashboardJSON) LateInitialize(attrs []byte) (bool, error) { + params := &DashboardJSONParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *DashboardJSON) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_dashboardjson_types.go b/apis/datadog/v1alpha1/zz_dashboardjson_types.go new file mode 100755 index 0000000..6455a81 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_dashboardjson_types.go @@ -0,0 +1,139 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DashboardJSONInitParameters struct { + + // (String) The JSON formatted definition of the Dashboard. + // The JSON formatted definition of the Dashboard. + Dashboard *string `json:"dashboard,omitempty" tf:"dashboard,omitempty"` + + // (Set of Number) A list of dashboard lists this dashboard belongs to. + // A list of dashboard lists this dashboard belongs to. + // +listType=set + DashboardLists []*float64 `json:"dashboardLists,omitempty" tf:"dashboard_lists,omitempty"` + + // (String) The URL of the dashboard. + // The URL of the dashboard. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type DashboardJSONObservation struct { + + // (String) The JSON formatted definition of the Dashboard. + // The JSON formatted definition of the Dashboard. + Dashboard *string `json:"dashboard,omitempty" tf:"dashboard,omitempty"` + + // (Set of Number) A list of dashboard lists this dashboard belongs to. + // A list of dashboard lists this dashboard belongs to. + // +listType=set + DashboardLists []*float64 `json:"dashboardLists,omitempty" tf:"dashboard_lists,omitempty"` + + // (Set of Number) The list of dashboard lists this dashboard should be removed from. Internal only. + // The list of dashboard lists this dashboard should be removed from. Internal only. + // +listType=set + DashboardListsRemoved []*float64 `json:"dashboardListsRemoved,omitempty" tf:"dashboard_lists_removed,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The URL of the dashboard. + // The URL of the dashboard. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type DashboardJSONParameters struct { + + // (String) The JSON formatted definition of the Dashboard. + // The JSON formatted definition of the Dashboard. + // +kubebuilder:validation:Optional + Dashboard *string `json:"dashboard,omitempty" tf:"dashboard,omitempty"` + + // (Set of Number) A list of dashboard lists this dashboard belongs to. + // A list of dashboard lists this dashboard belongs to. + // +kubebuilder:validation:Optional + // +listType=set + DashboardLists []*float64 `json:"dashboardLists,omitempty" tf:"dashboard_lists,omitempty"` + + // (String) The URL of the dashboard. + // The URL of the dashboard. + // +kubebuilder:validation:Optional + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +// DashboardJSONSpec defines the desired state of DashboardJSON +type DashboardJSONSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider DashboardJSONParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider DashboardJSONInitParameters `json:"initProvider,omitempty"` +} + +// DashboardJSONStatus defines the observed state of DashboardJSON. +type DashboardJSONStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider DashboardJSONObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// DashboardJSON is the Schema for the DashboardJSONs API. Provides a Datadog dashboard JSON resource. This can be used to create and manage Datadog dashboards using the JSON definition. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type DashboardJSON struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.dashboard) || (has(self.initProvider) && has(self.initProvider.dashboard))",message="spec.forProvider.dashboard is a required parameter" + Spec DashboardJSONSpec `json:"spec"` + Status DashboardJSONStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// DashboardJSONList contains a list of DashboardJSONs +type DashboardJSONList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []DashboardJSON `json:"items"` +} + +// Repository type metadata. +var ( + DashboardJSON_Kind = "DashboardJSON" + DashboardJSON_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: DashboardJSON_Kind}.String() + DashboardJSON_KindAPIVersion = DashboardJSON_Kind + "." + CRDGroupVersion.String() + DashboardJSON_GroupVersionKind = CRDGroupVersion.WithKind(DashboardJSON_Kind) +) + +func init() { + SchemeBuilder.Register(&DashboardJSON{}, &DashboardJSONList{}) +} diff --git a/apis/datadog/v1alpha1/zz_dashboardlist_terraformed.go b/apis/datadog/v1alpha1/zz_dashboardlist_terraformed.go new file mode 100755 index 0000000..25a3134 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_dashboardlist_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this DashboardList +func (mg *DashboardList) GetTerraformResourceType() string { + return "datadog_dashboard_list" +} + +// GetConnectionDetailsMapping for this DashboardList +func (tr *DashboardList) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this DashboardList +func (tr *DashboardList) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this DashboardList +func (tr *DashboardList) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this DashboardList +func (tr *DashboardList) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this DashboardList +func (tr *DashboardList) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this DashboardList +func (tr *DashboardList) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this DashboardList +func (tr *DashboardList) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this DashboardList +func (tr *DashboardList) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this DashboardList using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *DashboardList) LateInitialize(attrs []byte) (bool, error) { + params := &DashboardListParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *DashboardList) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_dashboardlist_types.go b/apis/datadog/v1alpha1/zz_dashboardlist_types.go new file mode 100755 index 0000000..6d981ad --- /dev/null +++ b/apis/datadog/v1alpha1/zz_dashboardlist_types.go @@ -0,0 +1,153 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DashItemInitParameters struct { + + // (String) The ID of the dashboard to add + // The ID of the dashboard to add + DashID *string `json:"dashId,omitempty" tf:"dash_id,omitempty"` + + // (String) The type of this dashboard. Valid values are custom_timeboard, custom_screenboard, integration_screenboard, integration_timeboard, host_timeboard. + // The type of this dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, `integration_screenboard`, `integration_timeboard`, `host_timeboard`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type DashItemObservation struct { + + // (String) The ID of the dashboard to add + // The ID of the dashboard to add + DashID *string `json:"dashId,omitempty" tf:"dash_id,omitempty"` + + // (String) The type of this dashboard. Valid values are custom_timeboard, custom_screenboard, integration_screenboard, integration_timeboard, host_timeboard. + // The type of this dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, `integration_screenboard`, `integration_timeboard`, `host_timeboard`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type DashItemParameters struct { + + // (String) The ID of the dashboard to add + // The ID of the dashboard to add + // +kubebuilder:validation:Optional + DashID *string `json:"dashId" tf:"dash_id,omitempty"` + + // (String) The type of this dashboard. Valid values are custom_timeboard, custom_screenboard, integration_screenboard, integration_timeboard, host_timeboard. + // The type of this dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, `integration_screenboard`, `integration_timeboard`, `host_timeboard`. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + +type DashboardListInitParameters struct { + + // (Block Set) A set of dashboard items that belong to this list (see below for nested schema) + // A set of dashboard items that belong to this list + DashItem []DashItemInitParameters `json:"dashItem,omitempty" tf:"dash_item,omitempty"` + + // (String) The name of the Dashboard List + // The name of the Dashboard List + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type DashboardListObservation struct { + + // (Block Set) A set of dashboard items that belong to this list (see below for nested schema) + // A set of dashboard items that belong to this list + DashItem []DashItemObservation `json:"dashItem,omitempty" tf:"dash_item,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the Dashboard List + // The name of the Dashboard List + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type DashboardListParameters struct { + + // (Block Set) A set of dashboard items that belong to this list (see below for nested schema) + // A set of dashboard items that belong to this list + // +kubebuilder:validation:Optional + DashItem []DashItemParameters `json:"dashItem,omitempty" tf:"dash_item,omitempty"` + + // (String) The name of the Dashboard List + // The name of the Dashboard List + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// DashboardListSpec defines the desired state of DashboardList +type DashboardListSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider DashboardListParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider DashboardListInitParameters `json:"initProvider,omitempty"` +} + +// DashboardListStatus defines the observed state of DashboardList. +type DashboardListStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider DashboardListObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// DashboardList is the Schema for the DashboardLists API. Provides a Datadog dashboard_list resource. This can be used to create and manage Datadog Dashboard Lists and the individual dashboards within them. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type DashboardList struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec DashboardListSpec `json:"spec"` + Status DashboardListStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// DashboardListList contains a list of DashboardLists +type DashboardListList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []DashboardList `json:"items"` +} + +// Repository type metadata. +var ( + DashboardList_Kind = "DashboardList" + DashboardList_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: DashboardList_Kind}.String() + DashboardList_KindAPIVersion = DashboardList_Kind + "." + CRDGroupVersion.String() + DashboardList_GroupVersionKind = CRDGroupVersion.WithKind(DashboardList_Kind) +) + +func init() { + SchemeBuilder.Register(&DashboardList{}, &DashboardListList{}) +} diff --git a/apis/datadog/v1alpha1/zz_downtime_terraformed.go b/apis/datadog/v1alpha1/zz_downtime_terraformed.go new file mode 100755 index 0000000..77d045e --- /dev/null +++ b/apis/datadog/v1alpha1/zz_downtime_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Downtime +func (mg *Downtime) GetTerraformResourceType() string { + return "datadog_downtime" +} + +// GetConnectionDetailsMapping for this Downtime +func (tr *Downtime) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Downtime +func (tr *Downtime) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Downtime +func (tr *Downtime) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Downtime +func (tr *Downtime) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Downtime +func (tr *Downtime) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Downtime +func (tr *Downtime) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Downtime +func (tr *Downtime) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Downtime +func (tr *Downtime) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Downtime using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Downtime) LateInitialize(attrs []byte) (bool, error) { + params := &DowntimeParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Downtime) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_downtime_types.go b/apis/datadog/v1alpha1/zz_downtime_types.go new file mode 100755 index 0000000..370cebb --- /dev/null +++ b/apis/datadog/v1alpha1/zz_downtime_types.go @@ -0,0 +1,337 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DowntimeInitParameters struct { + + // (Number) Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC. + // Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC. + End *float64 `json:"end,omitempty" tf:"end,omitempty"` + + // (String) String representing date and time to end the downtime in RFC3339 format. + // String representing date and time to end the downtime in RFC3339 format. + EndDate *string `json:"endDate,omitempty" tf:"end_date,omitempty"` + + // (String) An optional message to provide when creating the downtime, can include notification handles + // An optional message to provide when creating the downtime, can include notification handles + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Number) When specified, this downtime will only apply to this monitor + // When specified, this downtime will only apply to this monitor + MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + + // (Set of String) A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced + // A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced + // +listType=set + MonitorTags []*string `json:"monitorTags,omitempty" tf:"monitor_tags,omitempty"` + + // (Boolean) When true the first recovery notification during the downtime will be muted Defaults to false. + // When true the first recovery notification during the downtime will be muted Defaults to `false`. + MuteFirstRecoveryNotification *bool `json:"muteFirstRecoveryNotification,omitempty" tf:"mute_first_recovery_notification,omitempty"` + + // (Block List, Max: 1) Optional recurring schedule for this downtime (see below for nested schema) + // Optional recurring schedule for this downtime + Recurrence []RecurrenceInitParameters `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + // (List of String) specify the group scope to which this downtime applies. For everything use '*' + // specify the group scope to which this downtime applies. For everything use '*' + Scope []*string `json:"scope,omitempty" tf:"scope,omitempty"` + + // (Number) Specify when this downtime should start. Accepts a Unix timestamp in UTC. + // Specify when this downtime should start. Accepts a Unix timestamp in UTC. + Start *float64 `json:"start,omitempty" tf:"start,omitempty"` + + // (String) String representing date and time to start the downtime in RFC3339 format. + // String representing date and time to start the downtime in RFC3339 format. + StartDate *string `json:"startDate,omitempty" tf:"start_date,omitempty"` + + // (String) The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to "UTC". + // The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to `"UTC"`. + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type DowntimeObservation struct { + + // (Boolean) When true indicates this downtime is being actively applied + // When true indicates this downtime is being actively applied + Active *bool `json:"active,omitempty" tf:"active,omitempty"` + + // (Number) The id corresponding to the downtime object definition of the active child for the original parent recurring downtime. This field will only exist on recurring downtimes. + // The id corresponding to the downtime object definition of the active child for the original parent recurring downtime. This field will only exist on recurring downtimes. + ActiveChildID *float64 `json:"activeChildId,omitempty" tf:"active_child_id,omitempty"` + + // (Boolean) When true indicates this downtime is not being applied + // When true indicates this downtime is not being applied + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (Number) Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC. + // Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC. + End *float64 `json:"end,omitempty" tf:"end,omitempty"` + + // (String) String representing date and time to end the downtime in RFC3339 format. + // String representing date and time to end the downtime in RFC3339 format. + EndDate *string `json:"endDate,omitempty" tf:"end_date,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) An optional message to provide when creating the downtime, can include notification handles + // An optional message to provide when creating the downtime, can include notification handles + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Number) When specified, this downtime will only apply to this monitor + // When specified, this downtime will only apply to this monitor + MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + + // (Set of String) A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced + // A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced + // +listType=set + MonitorTags []*string `json:"monitorTags,omitempty" tf:"monitor_tags,omitempty"` + + // (Boolean) When true the first recovery notification during the downtime will be muted Defaults to false. + // When true the first recovery notification during the downtime will be muted Defaults to `false`. + MuteFirstRecoveryNotification *bool `json:"muteFirstRecoveryNotification,omitempty" tf:"mute_first_recovery_notification,omitempty"` + + // (Block List, Max: 1) Optional recurring schedule for this downtime (see below for nested schema) + // Optional recurring schedule for this downtime + Recurrence []RecurrenceObservation `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + // (List of String) specify the group scope to which this downtime applies. For everything use '*' + // specify the group scope to which this downtime applies. For everything use '*' + Scope []*string `json:"scope,omitempty" tf:"scope,omitempty"` + + // (Number) Specify when this downtime should start. Accepts a Unix timestamp in UTC. + // Specify when this downtime should start. Accepts a Unix timestamp in UTC. + Start *float64 `json:"start,omitempty" tf:"start,omitempty"` + + // (String) String representing date and time to start the downtime in RFC3339 format. + // String representing date and time to start the downtime in RFC3339 format. + StartDate *string `json:"startDate,omitempty" tf:"start_date,omitempty"` + + // (String) The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to "UTC". + // The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to `"UTC"`. + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type DowntimeParameters struct { + + // (Number) Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC. + // Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC. + // +kubebuilder:validation:Optional + End *float64 `json:"end,omitempty" tf:"end,omitempty"` + + // (String) String representing date and time to end the downtime in RFC3339 format. + // String representing date and time to end the downtime in RFC3339 format. + // +kubebuilder:validation:Optional + EndDate *string `json:"endDate,omitempty" tf:"end_date,omitempty"` + + // (String) An optional message to provide when creating the downtime, can include notification handles + // An optional message to provide when creating the downtime, can include notification handles + // +kubebuilder:validation:Optional + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Number) When specified, this downtime will only apply to this monitor + // When specified, this downtime will only apply to this monitor + // +kubebuilder:validation:Optional + MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + + // (Set of String) A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced + // A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced + // +kubebuilder:validation:Optional + // +listType=set + MonitorTags []*string `json:"monitorTags,omitempty" tf:"monitor_tags,omitempty"` + + // (Boolean) When true the first recovery notification during the downtime will be muted Defaults to false. + // When true the first recovery notification during the downtime will be muted Defaults to `false`. + // +kubebuilder:validation:Optional + MuteFirstRecoveryNotification *bool `json:"muteFirstRecoveryNotification,omitempty" tf:"mute_first_recovery_notification,omitempty"` + + // (Block List, Max: 1) Optional recurring schedule for this downtime (see below for nested schema) + // Optional recurring schedule for this downtime + // +kubebuilder:validation:Optional + Recurrence []RecurrenceParameters `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + // (List of String) specify the group scope to which this downtime applies. For everything use '*' + // specify the group scope to which this downtime applies. For everything use '*' + // +kubebuilder:validation:Optional + Scope []*string `json:"scope,omitempty" tf:"scope,omitempty"` + + // (Number) Specify when this downtime should start. Accepts a Unix timestamp in UTC. + // Specify when this downtime should start. Accepts a Unix timestamp in UTC. + // +kubebuilder:validation:Optional + Start *float64 `json:"start,omitempty" tf:"start,omitempty"` + + // (String) String representing date and time to start the downtime in RFC3339 format. + // String representing date and time to start the downtime in RFC3339 format. + // +kubebuilder:validation:Optional + StartDate *string `json:"startDate,omitempty" tf:"start_date,omitempty"` + + // (String) The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to "UTC". + // The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to `"UTC"`. + // +kubebuilder:validation:Optional + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type RecurrenceInitParameters struct { + + // (Number) How often to repeat as an integer. For example to repeat every 3 days, select a type of days and a period of 3. + // How often to repeat as an integer. For example to repeat every 3 days, select a `type` of `days` and a `period` of `3`. + Period *float64 `json:"period,omitempty" tf:"period,omitempty"` + + // (String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use FREQ=MONTHLY;INTERVAL=1. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). Only applicable when type is rrule. + // The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). Only applicable when `type` is `rrule`. + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // (String) One of days, weeks, months, years, or rrule. + // One of `days`, `weeks`, `months`, `years`, or `rrule`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Number) The date at which the recurrence should end as a POSIX timestamp. until_occurrences and until_date are mutually exclusive. + // The date at which the recurrence should end as a POSIX timestamp. `until_occurrences` and `until_date` are mutually exclusive. + UntilDate *float64 `json:"untilDate,omitempty" tf:"until_date,omitempty"` + + // (Number) How many times the downtime will be rescheduled. until_occurrences and until_date are mutually exclusive. + // How many times the downtime will be rescheduled. `until_occurrences` and `until_date` are mutually exclusive. + UntilOccurrences *float64 `json:"untilOccurrences,omitempty" tf:"until_occurrences,omitempty"` + + // (List of String) A list of week days to repeat on. Choose from: Mon, Tue, Wed, Thu, Fri, Sat or Sun. Only applicable when type is weeks. First letter must be capitalized. + // A list of week days to repeat on. Choose from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. Only applicable when `type` is `weeks`. First letter must be capitalized. + WeekDays []*string `json:"weekDays,omitempty" tf:"week_days,omitempty"` +} + +type RecurrenceObservation struct { + + // (Number) How often to repeat as an integer. For example to repeat every 3 days, select a type of days and a period of 3. + // How often to repeat as an integer. For example to repeat every 3 days, select a `type` of `days` and a `period` of `3`. + Period *float64 `json:"period,omitempty" tf:"period,omitempty"` + + // (String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use FREQ=MONTHLY;INTERVAL=1. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). Only applicable when type is rrule. + // The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). Only applicable when `type` is `rrule`. + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // (String) One of days, weeks, months, years, or rrule. + // One of `days`, `weeks`, `months`, `years`, or `rrule`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Number) The date at which the recurrence should end as a POSIX timestamp. until_occurrences and until_date are mutually exclusive. + // The date at which the recurrence should end as a POSIX timestamp. `until_occurrences` and `until_date` are mutually exclusive. + UntilDate *float64 `json:"untilDate,omitempty" tf:"until_date,omitempty"` + + // (Number) How many times the downtime will be rescheduled. until_occurrences and until_date are mutually exclusive. + // How many times the downtime will be rescheduled. `until_occurrences` and `until_date` are mutually exclusive. + UntilOccurrences *float64 `json:"untilOccurrences,omitempty" tf:"until_occurrences,omitempty"` + + // (List of String) A list of week days to repeat on. Choose from: Mon, Tue, Wed, Thu, Fri, Sat or Sun. Only applicable when type is weeks. First letter must be capitalized. + // A list of week days to repeat on. Choose from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. Only applicable when `type` is `weeks`. First letter must be capitalized. + WeekDays []*string `json:"weekDays,omitempty" tf:"week_days,omitempty"` +} + +type RecurrenceParameters struct { + + // (Number) How often to repeat as an integer. For example to repeat every 3 days, select a type of days and a period of 3. + // How often to repeat as an integer. For example to repeat every 3 days, select a `type` of `days` and a `period` of `3`. + // +kubebuilder:validation:Optional + Period *float64 `json:"period,omitempty" tf:"period,omitempty"` + + // (String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use FREQ=MONTHLY;INTERVAL=1. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). Only applicable when type is rrule. + // The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). Only applicable when `type` is `rrule`. + // +kubebuilder:validation:Optional + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // (String) One of days, weeks, months, years, or rrule. + // One of `days`, `weeks`, `months`, `years`, or `rrule`. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` + + // (Number) The date at which the recurrence should end as a POSIX timestamp. until_occurrences and until_date are mutually exclusive. + // The date at which the recurrence should end as a POSIX timestamp. `until_occurrences` and `until_date` are mutually exclusive. + // +kubebuilder:validation:Optional + UntilDate *float64 `json:"untilDate,omitempty" tf:"until_date,omitempty"` + + // (Number) How many times the downtime will be rescheduled. until_occurrences and until_date are mutually exclusive. + // How many times the downtime will be rescheduled. `until_occurrences` and `until_date` are mutually exclusive. + // +kubebuilder:validation:Optional + UntilOccurrences *float64 `json:"untilOccurrences,omitempty" tf:"until_occurrences,omitempty"` + + // (List of String) A list of week days to repeat on. Choose from: Mon, Tue, Wed, Thu, Fri, Sat or Sun. Only applicable when type is weeks. First letter must be capitalized. + // A list of week days to repeat on. Choose from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. Only applicable when `type` is `weeks`. First letter must be capitalized. + // +kubebuilder:validation:Optional + WeekDays []*string `json:"weekDays,omitempty" tf:"week_days,omitempty"` +} + +// DowntimeSpec defines the desired state of Downtime +type DowntimeSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider DowntimeParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider DowntimeInitParameters `json:"initProvider,omitempty"` +} + +// DowntimeStatus defines the observed state of Downtime. +type DowntimeStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider DowntimeObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Downtime is the Schema for the Downtimes API. This resource is deprecated — use the datadog_downtime_schedule resource instead. Provides a Datadog downtime resource. This can be used to create and manage Datadog downtimes. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Downtime struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.scope) || (has(self.initProvider) && has(self.initProvider.scope))",message="spec.forProvider.scope is a required parameter" + Spec DowntimeSpec `json:"spec"` + Status DowntimeStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// DowntimeList contains a list of Downtimes +type DowntimeList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Downtime `json:"items"` +} + +// Repository type metadata. +var ( + Downtime_Kind = "Downtime" + Downtime_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Downtime_Kind}.String() + Downtime_KindAPIVersion = Downtime_Kind + "." + CRDGroupVersion.String() + Downtime_GroupVersionKind = CRDGroupVersion.WithKind(Downtime_Kind) +) + +func init() { + SchemeBuilder.Register(&Downtime{}, &DowntimeList{}) +} diff --git a/apis/datadog/v1alpha1/zz_downtimeschedule_terraformed.go b/apis/datadog/v1alpha1/zz_downtimeschedule_terraformed.go new file mode 100755 index 0000000..181e059 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_downtimeschedule_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this DowntimeSchedule +func (mg *DowntimeSchedule) GetTerraformResourceType() string { + return "datadog_downtime_schedule" +} + +// GetConnectionDetailsMapping for this DowntimeSchedule +func (tr *DowntimeSchedule) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this DowntimeSchedule +func (tr *DowntimeSchedule) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this DowntimeSchedule +func (tr *DowntimeSchedule) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this DowntimeSchedule +func (tr *DowntimeSchedule) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this DowntimeSchedule +func (tr *DowntimeSchedule) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this DowntimeSchedule +func (tr *DowntimeSchedule) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this DowntimeSchedule +func (tr *DowntimeSchedule) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this DowntimeSchedule +func (tr *DowntimeSchedule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this DowntimeSchedule using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *DowntimeSchedule) LateInitialize(attrs []byte) (bool, error) { + params := &DowntimeScheduleParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *DowntimeSchedule) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_downtimeschedule_types.go b/apis/datadog/v1alpha1/zz_downtimeschedule_types.go new file mode 100755 index 0000000..42fca7e --- /dev/null +++ b/apis/datadog/v1alpha1/zz_downtimeschedule_types.go @@ -0,0 +1,360 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DowntimeScheduleInitParameters struct { + + // (String) The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling. + // The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling. + DisplayTimezone *string `json:"displayTimezone,omitempty" tf:"display_timezone,omitempty"` + + // (String) A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same @username notation as events. + // A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same `@username` notation as events. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Block, Optional) (see below for nested schema) + MonitorIdentifier *MonitorIdentifierInitParameters `json:"monitorIdentifier,omitempty" tf:"monitor_identifier,omitempty"` + + // (Boolean) If the first recovery notification during a downtime should be muted. + // If the first recovery notification during a downtime should be muted. + MuteFirstRecoveryNotification *bool `json:"muteFirstRecoveryNotification,omitempty" tf:"mute_first_recovery_notification,omitempty"` + + // (Set of String) States that will trigger a monitor notification when the notify_end_types action occurs. + // States that will trigger a monitor notification when the `notify_end_types` action occurs. + // +listType=set + NotifyEndStates []*string `json:"notifyEndStates,omitempty" tf:"notify_end_states,omitempty"` + + // (Set of String) Actions that will trigger a monitor notification if the downtime is in the notify_end_types state. + // Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state. + // +listType=set + NotifyEndTypes []*string `json:"notifyEndTypes,omitempty" tf:"notify_end_types,omitempty"` + + // (Block, Optional) (see below for nested schema) + OneTimeSchedule *OneTimeScheduleInitParameters `json:"oneTimeSchedule,omitempty" tf:"one_time_schedule,omitempty"` + + // (Block, Optional) (see below for nested schema) + RecurringSchedule *RecurringScheduleInitParameters `json:"recurringSchedule,omitempty" tf:"recurring_schedule,omitempty"` + + // (String) The scope to which the downtime applies. Must follow the common search syntax. + // The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/). + Scope *string `json:"scope,omitempty" tf:"scope,omitempty"` +} + +type DowntimeScheduleObservation struct { + + // (String) The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling. + // The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling. + DisplayTimezone *string `json:"displayTimezone,omitempty" tf:"display_timezone,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same @username notation as events. + // A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same `@username` notation as events. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Block, Optional) (see below for nested schema) + MonitorIdentifier *MonitorIdentifierObservation `json:"monitorIdentifier,omitempty" tf:"monitor_identifier,omitempty"` + + // (Boolean) If the first recovery notification during a downtime should be muted. + // If the first recovery notification during a downtime should be muted. + MuteFirstRecoveryNotification *bool `json:"muteFirstRecoveryNotification,omitempty" tf:"mute_first_recovery_notification,omitempty"` + + // (Set of String) States that will trigger a monitor notification when the notify_end_types action occurs. + // States that will trigger a monitor notification when the `notify_end_types` action occurs. + // +listType=set + NotifyEndStates []*string `json:"notifyEndStates,omitempty" tf:"notify_end_states,omitempty"` + + // (Set of String) Actions that will trigger a monitor notification if the downtime is in the notify_end_types state. + // Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state. + // +listType=set + NotifyEndTypes []*string `json:"notifyEndTypes,omitempty" tf:"notify_end_types,omitempty"` + + // (Block, Optional) (see below for nested schema) + OneTimeSchedule *OneTimeScheduleObservation `json:"oneTimeSchedule,omitempty" tf:"one_time_schedule,omitempty"` + + // (Block, Optional) (see below for nested schema) + RecurringSchedule *RecurringScheduleObservation `json:"recurringSchedule,omitempty" tf:"recurring_schedule,omitempty"` + + // (String) The scope to which the downtime applies. Must follow the common search syntax. + // The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/). + Scope *string `json:"scope,omitempty" tf:"scope,omitempty"` +} + +type DowntimeScheduleParameters struct { + + // (String) The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling. + // The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling. + // +kubebuilder:validation:Optional + DisplayTimezone *string `json:"displayTimezone,omitempty" tf:"display_timezone,omitempty"` + + // (String) A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same @username notation as events. + // A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same `@username` notation as events. + // +kubebuilder:validation:Optional + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Block, Optional) (see below for nested schema) + // +kubebuilder:validation:Optional + MonitorIdentifier *MonitorIdentifierParameters `json:"monitorIdentifier,omitempty" tf:"monitor_identifier,omitempty"` + + // (Boolean) If the first recovery notification during a downtime should be muted. + // If the first recovery notification during a downtime should be muted. + // +kubebuilder:validation:Optional + MuteFirstRecoveryNotification *bool `json:"muteFirstRecoveryNotification,omitempty" tf:"mute_first_recovery_notification,omitempty"` + + // (Set of String) States that will trigger a monitor notification when the notify_end_types action occurs. + // States that will trigger a monitor notification when the `notify_end_types` action occurs. + // +kubebuilder:validation:Optional + // +listType=set + NotifyEndStates []*string `json:"notifyEndStates,omitempty" tf:"notify_end_states,omitempty"` + + // (Set of String) Actions that will trigger a monitor notification if the downtime is in the notify_end_types state. + // Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state. + // +kubebuilder:validation:Optional + // +listType=set + NotifyEndTypes []*string `json:"notifyEndTypes,omitempty" tf:"notify_end_types,omitempty"` + + // (Block, Optional) (see below for nested schema) + // +kubebuilder:validation:Optional + OneTimeSchedule *OneTimeScheduleParameters `json:"oneTimeSchedule,omitempty" tf:"one_time_schedule,omitempty"` + + // (Block, Optional) (see below for nested schema) + // +kubebuilder:validation:Optional + RecurringSchedule *RecurringScheduleParameters `json:"recurringSchedule,omitempty" tf:"recurring_schedule,omitempty"` + + // (String) The scope to which the downtime applies. Must follow the common search syntax. + // The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/). + // +kubebuilder:validation:Optional + Scope *string `json:"scope,omitempty" tf:"scope,omitempty"` +} + +type MonitorIdentifierInitParameters struct { + + // (Number) ID of the monitor to prevent notifications. + // ID of the monitor to prevent notifications. + MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + + // (Set of String) A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match all provided monitor tags. Setting monitor_tags to [*] configures the downtime to mute all monitors for the given scope. + // A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags` to `[*]` configures the downtime to mute all monitors for the given scope. + // +listType=set + MonitorTags []*string `json:"monitorTags,omitempty" tf:"monitor_tags,omitempty"` +} + +type MonitorIdentifierObservation struct { + + // (Number) ID of the monitor to prevent notifications. + // ID of the monitor to prevent notifications. + MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + + // (Set of String) A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match all provided monitor tags. Setting monitor_tags to [*] configures the downtime to mute all monitors for the given scope. + // A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags` to `[*]` configures the downtime to mute all monitors for the given scope. + // +listType=set + MonitorTags []*string `json:"monitorTags,omitempty" tf:"monitor_tags,omitempty"` +} + +type MonitorIdentifierParameters struct { + + // (Number) ID of the monitor to prevent notifications. + // ID of the monitor to prevent notifications. + // +kubebuilder:validation:Optional + MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + + // (Set of String) A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match all provided monitor tags. Setting monitor_tags to [*] configures the downtime to mute all monitors for the given scope. + // A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags` to `[*]` configures the downtime to mute all monitors for the given scope. + // +kubebuilder:validation:Optional + // +listType=set + MonitorTags []*string `json:"monitorTags,omitempty" tf:"monitor_tags,omitempty"` +} + +type OneTimeScheduleInitParameters struct { + + // 8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends. + // ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends. + End *string `json:"end,omitempty" tf:"end,omitempty"` + + // 8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + // ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + Start *string `json:"start,omitempty" tf:"start,omitempty"` +} + +type OneTimeScheduleObservation struct { + + // 8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends. + // ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends. + End *string `json:"end,omitempty" tf:"end,omitempty"` + + // 8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + // ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + Start *string `json:"start,omitempty" tf:"start,omitempty"` +} + +type OneTimeScheduleParameters struct { + + // 8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends. + // ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends. + // +kubebuilder:validation:Optional + End *string `json:"end,omitempty" tf:"end,omitempty"` + + // 8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + // ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + // +kubebuilder:validation:Optional + Start *string `json:"start,omitempty" tf:"start,omitempty"` +} + +type RecurringScheduleInitParameters struct { + + // (Block List) (see below for nested schema) + Recurrence []RecurringScheduleRecurrenceInitParameters `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + // (String) The timezone in which to schedule the downtime. + // The timezone in which to schedule the downtime. + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type RecurringScheduleObservation struct { + + // (Block List) (see below for nested schema) + Recurrence []RecurringScheduleRecurrenceObservation `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + // (String) The timezone in which to schedule the downtime. + // The timezone in which to schedule the downtime. + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type RecurringScheduleParameters struct { + + // (Block List) (see below for nested schema) + // +kubebuilder:validation:Optional + Recurrence []RecurringScheduleRecurrenceParameters `json:"recurrence,omitempty" tf:"recurrence,omitempty"` + + // (String) The timezone in which to schedule the downtime. + // The timezone in which to schedule the downtime. + // +kubebuilder:validation:Optional + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type RecurringScheduleRecurrenceInitParameters struct { + + // (String) The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'. + // The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'. + Duration *string `json:"duration,omitempty" tf:"duration,omitempty"` + + // (String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to rrule and set the FREQ to MONTHLY and BYMONTHDAY to 1. Most common rrule options from the iCalendar Spec are supported. Note: Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). More examples available in this downtime guide. + // The `RRULE` standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`. Most common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api). + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // 8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + // ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the downtime starts the moment it is created. + Start *string `json:"start,omitempty" tf:"start,omitempty"` +} + +type RecurringScheduleRecurrenceObservation struct { + + // (String) The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'. + // The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'. + Duration *string `json:"duration,omitempty" tf:"duration,omitempty"` + + // (String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to rrule and set the FREQ to MONTHLY and BYMONTHDAY to 1. Most common rrule options from the iCalendar Spec are supported. Note: Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). More examples available in this downtime guide. + // The `RRULE` standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`. Most common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api). + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // 8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + // ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the downtime starts the moment it is created. + Start *string `json:"start,omitempty" tf:"start,omitempty"` +} + +type RecurringScheduleRecurrenceParameters struct { + + // (String) The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'. + // The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'. + // +kubebuilder:validation:Optional + Duration *string `json:"duration" tf:"duration,omitempty"` + + // (String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to rrule and set the FREQ to MONTHLY and BYMONTHDAY to 1. Most common rrule options from the iCalendar Spec are supported. Note: Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). More examples available in this downtime guide. + // The `RRULE` standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`. Most common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api). + // +kubebuilder:validation:Optional + Rrule *string `json:"rrule" tf:"rrule,omitempty"` + + // 8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + // ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the downtime starts the moment it is created. + // +kubebuilder:validation:Optional + Start *string `json:"start,omitempty" tf:"start,omitempty"` +} + +// DowntimeScheduleSpec defines the desired state of DowntimeSchedule +type DowntimeScheduleSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider DowntimeScheduleParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider DowntimeScheduleInitParameters `json:"initProvider,omitempty"` +} + +// DowntimeScheduleStatus defines the observed state of DowntimeSchedule. +type DowntimeScheduleStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider DowntimeScheduleObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// DowntimeSchedule is the Schema for the DowntimeSchedules API. Provides a Datadog DowntimeSchedule resource. This can be used to create and manage Datadog downtimes. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type DowntimeSchedule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.recurringSchedule) || (has(self.initProvider) && has(self.initProvider.recurringSchedule))",message="spec.forProvider.recurringSchedule is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.scope) || (has(self.initProvider) && has(self.initProvider.scope))",message="spec.forProvider.scope is a required parameter" + Spec DowntimeScheduleSpec `json:"spec"` + Status DowntimeScheduleStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// DowntimeScheduleList contains a list of DowntimeSchedules +type DowntimeScheduleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []DowntimeSchedule `json:"items"` +} + +// Repository type metadata. +var ( + DowntimeSchedule_Kind = "DowntimeSchedule" + DowntimeSchedule_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: DowntimeSchedule_Kind}.String() + DowntimeSchedule_KindAPIVersion = DowntimeSchedule_Kind + "." + CRDGroupVersion.String() + DowntimeSchedule_GroupVersionKind = CRDGroupVersion.WithKind(DowntimeSchedule_Kind) +) + +func init() { + SchemeBuilder.Register(&DowntimeSchedule{}, &DowntimeScheduleList{}) +} diff --git a/apis/datadog/v1alpha1/zz_generated.conversion_hubs.go b/apis/datadog/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..73243b3 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,101 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *APIKey) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *AppKey) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *AuthnMapping) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ChildOrganization) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *DashboardJSON) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *DashboardList) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Downtime) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *DowntimeSchedule) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *IPAllowList) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Monitor) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *MonitorConfigPolicy) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *MonitorJSON) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *OrganizationSettings) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Powerpack) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *RestrictionPolicy) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Role) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *RUMApplication) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ServiceAccount) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ServiceAccountApplicationKey) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ServiceDefinitionYAML) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ServiceLevelObjective) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *SLOCorrection) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *SpansMetric) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Team) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *TeamLink) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *TeamMembership) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *TeamPermissionSetting) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *User) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Webhook) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *WebhookCustomVariable) Hub() {} diff --git a/apis/datadog/v1alpha1/zz_generated.deepcopy.go b/apis/datadog/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..5dbfcd3 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,11023 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKey) DeepCopyInto(out *APIKey) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKey. +func (in *APIKey) DeepCopy() *APIKey { + if in == nil { + return nil + } + out := new(APIKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *APIKey) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKeyInitParameters) DeepCopyInto(out *APIKeyInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeyInitParameters. +func (in *APIKeyInitParameters) DeepCopy() *APIKeyInitParameters { + if in == nil { + return nil + } + out := new(APIKeyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKeyList) DeepCopyInto(out *APIKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]APIKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeyList. +func (in *APIKeyList) DeepCopy() *APIKeyList { + if in == nil { + return nil + } + out := new(APIKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *APIKeyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKeyObservation) DeepCopyInto(out *APIKeyObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeyObservation. +func (in *APIKeyObservation) DeepCopy() *APIKeyObservation { + if in == nil { + return nil + } + out := new(APIKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKeyParameters) DeepCopyInto(out *APIKeyParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeyParameters. +func (in *APIKeyParameters) DeepCopy() *APIKeyParameters { + if in == nil { + return nil + } + out := new(APIKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKeySpec) DeepCopyInto(out *APIKeySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeySpec. +func (in *APIKeySpec) DeepCopy() *APIKeySpec { + if in == nil { + return nil + } + out := new(APIKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKeyStatus) DeepCopyInto(out *APIKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeyStatus. +func (in *APIKeyStatus) DeepCopy() *APIKeyStatus { + if in == nil { + return nil + } + out := new(APIKeyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AppKey) DeepCopyInto(out *AppKey) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppKey. +func (in *AppKey) DeepCopy() *AppKey { + if in == nil { + return nil + } + out := new(AppKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AppKey) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AppKeyInitParameters) DeepCopyInto(out *AppKeyInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppKeyInitParameters. +func (in *AppKeyInitParameters) DeepCopy() *AppKeyInitParameters { + if in == nil { + return nil + } + out := new(AppKeyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AppKeyList) DeepCopyInto(out *AppKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]AppKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppKeyList. +func (in *AppKeyList) DeepCopy() *AppKeyList { + if in == nil { + return nil + } + out := new(AppKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AppKeyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AppKeyObservation) DeepCopyInto(out *AppKeyObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppKeyObservation. +func (in *AppKeyObservation) DeepCopy() *AppKeyObservation { + if in == nil { + return nil + } + out := new(AppKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AppKeyParameters) DeepCopyInto(out *AppKeyParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppKeyParameters. +func (in *AppKeyParameters) DeepCopy() *AppKeyParameters { + if in == nil { + return nil + } + out := new(AppKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AppKeySpec) DeepCopyInto(out *AppKeySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppKeySpec. +func (in *AppKeySpec) DeepCopy() *AppKeySpec { + if in == nil { + return nil + } + out := new(AppKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AppKeyStatus) DeepCopyInto(out *AppKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppKeyStatus. +func (in *AppKeyStatus) DeepCopy() *AppKeyStatus { + if in == nil { + return nil + } + out := new(AppKeyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationKeyInitParameters) DeepCopyInto(out *ApplicationKeyInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationKeyInitParameters. +func (in *ApplicationKeyInitParameters) DeepCopy() *ApplicationKeyInitParameters { + if in == nil { + return nil + } + out := new(ApplicationKeyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationKeyObservation) DeepCopyInto(out *ApplicationKeyObservation) { + *out = *in + if in.Hash != nil { + in, out := &in.Hash, &out.Hash + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationKeyObservation. +func (in *ApplicationKeyObservation) DeepCopy() *ApplicationKeyObservation { + if in == nil { + return nil + } + out := new(ApplicationKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationKeyParameters) DeepCopyInto(out *ApplicationKeyParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationKeyParameters. +func (in *ApplicationKeyParameters) DeepCopy() *ApplicationKeyParameters { + if in == nil { + return nil + } + out := new(ApplicationKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthnMapping) DeepCopyInto(out *AuthnMapping) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthnMapping. +func (in *AuthnMapping) DeepCopy() *AuthnMapping { + if in == nil { + return nil + } + out := new(AuthnMapping) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AuthnMapping) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthnMappingInitParameters) DeepCopyInto(out *AuthnMappingInitParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthnMappingInitParameters. +func (in *AuthnMappingInitParameters) DeepCopy() *AuthnMappingInitParameters { + if in == nil { + return nil + } + out := new(AuthnMappingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthnMappingList) DeepCopyInto(out *AuthnMappingList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]AuthnMapping, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthnMappingList. +func (in *AuthnMappingList) DeepCopy() *AuthnMappingList { + if in == nil { + return nil + } + out := new(AuthnMappingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AuthnMappingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthnMappingObservation) DeepCopyInto(out *AuthnMappingObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthnMappingObservation. +func (in *AuthnMappingObservation) DeepCopy() *AuthnMappingObservation { + if in == nil { + return nil + } + out := new(AuthnMappingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthnMappingParameters) DeepCopyInto(out *AuthnMappingParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthnMappingParameters. +func (in *AuthnMappingParameters) DeepCopy() *AuthnMappingParameters { + if in == nil { + return nil + } + out := new(AuthnMappingParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthnMappingSpec) DeepCopyInto(out *AuthnMappingSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthnMappingSpec. +func (in *AuthnMappingSpec) DeepCopy() *AuthnMappingSpec { + if in == nil { + return nil + } + out := new(AuthnMappingSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AuthnMappingStatus) DeepCopyInto(out *AuthnMappingStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthnMappingStatus. +func (in *AuthnMappingStatus) DeepCopy() *AuthnMappingStatus { + if in == nil { + return nil + } + out := new(AuthnMappingStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BindingsInitParameters) DeepCopyInto(out *BindingsInitParameters) { + *out = *in + if in.Principals != nil { + in, out := &in.Principals, &out.Principals + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Relation != nil { + in, out := &in.Relation, &out.Relation + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingsInitParameters. +func (in *BindingsInitParameters) DeepCopy() *BindingsInitParameters { + if in == nil { + return nil + } + out := new(BindingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BindingsObservation) DeepCopyInto(out *BindingsObservation) { + *out = *in + if in.Principals != nil { + in, out := &in.Principals, &out.Principals + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Relation != nil { + in, out := &in.Relation, &out.Relation + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingsObservation. +func (in *BindingsObservation) DeepCopy() *BindingsObservation { + if in == nil { + return nil + } + out := new(BindingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BindingsParameters) DeepCopyInto(out *BindingsParameters) { + *out = *in + if in.Principals != nil { + in, out := &in.Principals, &out.Principals + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Relation != nil { + in, out := &in.Relation, &out.Relation + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingsParameters. +func (in *BindingsParameters) DeepCopy() *BindingsParameters { + if in == nil { + return nil + } + out := new(BindingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganization) DeepCopyInto(out *ChildOrganization) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganization. +func (in *ChildOrganization) DeepCopy() *ChildOrganization { + if in == nil { + return nil + } + out := new(ChildOrganization) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ChildOrganization) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationAPIKeyInitParameters) DeepCopyInto(out *ChildOrganizationAPIKeyInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationAPIKeyInitParameters. +func (in *ChildOrganizationAPIKeyInitParameters) DeepCopy() *ChildOrganizationAPIKeyInitParameters { + if in == nil { + return nil + } + out := new(ChildOrganizationAPIKeyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationAPIKeyObservation) DeepCopyInto(out *ChildOrganizationAPIKeyObservation) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationAPIKeyObservation. +func (in *ChildOrganizationAPIKeyObservation) DeepCopy() *ChildOrganizationAPIKeyObservation { + if in == nil { + return nil + } + out := new(ChildOrganizationAPIKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationAPIKeyParameters) DeepCopyInto(out *ChildOrganizationAPIKeyParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationAPIKeyParameters. +func (in *ChildOrganizationAPIKeyParameters) DeepCopy() *ChildOrganizationAPIKeyParameters { + if in == nil { + return nil + } + out := new(ChildOrganizationAPIKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationInitParameters) DeepCopyInto(out *ChildOrganizationInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationInitParameters. +func (in *ChildOrganizationInitParameters) DeepCopy() *ChildOrganizationInitParameters { + if in == nil { + return nil + } + out := new(ChildOrganizationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationList) DeepCopyInto(out *ChildOrganizationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ChildOrganization, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationList. +func (in *ChildOrganizationList) DeepCopy() *ChildOrganizationList { + if in == nil { + return nil + } + out := new(ChildOrganizationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ChildOrganizationList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationObservation) DeepCopyInto(out *ChildOrganizationObservation) { + *out = *in + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = make([]ChildOrganizationAPIKeyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ApplicationKey != nil { + in, out := &in.ApplicationKey, &out.ApplicationKey + *out = make([]ApplicationKeyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PublicID != nil { + in, out := &in.PublicID, &out.PublicID + *out = new(string) + **out = **in + } + if in.Settings != nil { + in, out := &in.Settings, &out.Settings + *out = make([]SettingsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.User != nil { + in, out := &in.User, &out.User + *out = make([]UserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationObservation. +func (in *ChildOrganizationObservation) DeepCopy() *ChildOrganizationObservation { + if in == nil { + return nil + } + out := new(ChildOrganizationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationParameters) DeepCopyInto(out *ChildOrganizationParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationParameters. +func (in *ChildOrganizationParameters) DeepCopy() *ChildOrganizationParameters { + if in == nil { + return nil + } + out := new(ChildOrganizationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationSpec) DeepCopyInto(out *ChildOrganizationSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationSpec. +func (in *ChildOrganizationSpec) DeepCopy() *ChildOrganizationSpec { + if in == nil { + return nil + } + out := new(ChildOrganizationSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ChildOrganizationStatus) DeepCopyInto(out *ChildOrganizationStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildOrganizationStatus. +func (in *ChildOrganizationStatus) DeepCopy() *ChildOrganizationStatus { + if in == nil { + return nil + } + out := new(ChildOrganizationStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputeInitParameters) DeepCopyInto(out *ComputeInitParameters) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(float64) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputeInitParameters. +func (in *ComputeInitParameters) DeepCopy() *ComputeInitParameters { + if in == nil { + return nil + } + out := new(ComputeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputeObservation) DeepCopyInto(out *ComputeObservation) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(float64) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputeObservation. +func (in *ComputeObservation) DeepCopy() *ComputeObservation { + if in == nil { + return nil + } + out := new(ComputeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputeParameters) DeepCopyInto(out *ComputeParameters) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(float64) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputeParameters. +func (in *ComputeParameters) DeepCopy() *ComputeParameters { + if in == nil { + return nil + } + out := new(ComputeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomScheduleInitParameters) DeepCopyInto(out *CustomScheduleInitParameters) { + *out = *in + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]CustomScheduleRecurrenceInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomScheduleInitParameters. +func (in *CustomScheduleInitParameters) DeepCopy() *CustomScheduleInitParameters { + if in == nil { + return nil + } + out := new(CustomScheduleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomScheduleObservation) DeepCopyInto(out *CustomScheduleObservation) { + *out = *in + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]CustomScheduleRecurrenceObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomScheduleObservation. +func (in *CustomScheduleObservation) DeepCopy() *CustomScheduleObservation { + if in == nil { + return nil + } + out := new(CustomScheduleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomScheduleParameters) DeepCopyInto(out *CustomScheduleParameters) { + *out = *in + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]CustomScheduleRecurrenceParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomScheduleParameters. +func (in *CustomScheduleParameters) DeepCopy() *CustomScheduleParameters { + if in == nil { + return nil + } + out := new(CustomScheduleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomScheduleRecurrenceInitParameters) DeepCopyInto(out *CustomScheduleRecurrenceInitParameters) { + *out = *in + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomScheduleRecurrenceInitParameters. +func (in *CustomScheduleRecurrenceInitParameters) DeepCopy() *CustomScheduleRecurrenceInitParameters { + if in == nil { + return nil + } + out := new(CustomScheduleRecurrenceInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomScheduleRecurrenceObservation) DeepCopyInto(out *CustomScheduleRecurrenceObservation) { + *out = *in + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomScheduleRecurrenceObservation. +func (in *CustomScheduleRecurrenceObservation) DeepCopy() *CustomScheduleRecurrenceObservation { + if in == nil { + return nil + } + out := new(CustomScheduleRecurrenceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomScheduleRecurrenceParameters) DeepCopyInto(out *CustomScheduleRecurrenceParameters) { + *out = *in + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomScheduleRecurrenceParameters. +func (in *CustomScheduleRecurrenceParameters) DeepCopy() *CustomScheduleRecurrenceParameters { + if in == nil { + return nil + } + out := new(CustomScheduleRecurrenceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashItemInitParameters) DeepCopyInto(out *DashItemInitParameters) { + *out = *in + if in.DashID != nil { + in, out := &in.DashID, &out.DashID + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashItemInitParameters. +func (in *DashItemInitParameters) DeepCopy() *DashItemInitParameters { + if in == nil { + return nil + } + out := new(DashItemInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashItemObservation) DeepCopyInto(out *DashItemObservation) { + *out = *in + if in.DashID != nil { + in, out := &in.DashID, &out.DashID + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashItemObservation. +func (in *DashItemObservation) DeepCopy() *DashItemObservation { + if in == nil { + return nil + } + out := new(DashItemObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashItemParameters) DeepCopyInto(out *DashItemParameters) { + *out = *in + if in.DashID != nil { + in, out := &in.DashID, &out.DashID + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashItemParameters. +func (in *DashItemParameters) DeepCopy() *DashItemParameters { + if in == nil { + return nil + } + out := new(DashItemParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardJSON) DeepCopyInto(out *DashboardJSON) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJSON. +func (in *DashboardJSON) DeepCopy() *DashboardJSON { + if in == nil { + return nil + } + out := new(DashboardJSON) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DashboardJSON) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardJSONInitParameters) DeepCopyInto(out *DashboardJSONInitParameters) { + *out = *in + if in.Dashboard != nil { + in, out := &in.Dashboard, &out.Dashboard + *out = new(string) + **out = **in + } + if in.DashboardLists != nil { + in, out := &in.DashboardLists, &out.DashboardLists + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJSONInitParameters. +func (in *DashboardJSONInitParameters) DeepCopy() *DashboardJSONInitParameters { + if in == nil { + return nil + } + out := new(DashboardJSONInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardJSONList) DeepCopyInto(out *DashboardJSONList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DashboardJSON, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJSONList. +func (in *DashboardJSONList) DeepCopy() *DashboardJSONList { + if in == nil { + return nil + } + out := new(DashboardJSONList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DashboardJSONList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardJSONObservation) DeepCopyInto(out *DashboardJSONObservation) { + *out = *in + if in.Dashboard != nil { + in, out := &in.Dashboard, &out.Dashboard + *out = new(string) + **out = **in + } + if in.DashboardLists != nil { + in, out := &in.DashboardLists, &out.DashboardLists + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } + if in.DashboardListsRemoved != nil { + in, out := &in.DashboardListsRemoved, &out.DashboardListsRemoved + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJSONObservation. +func (in *DashboardJSONObservation) DeepCopy() *DashboardJSONObservation { + if in == nil { + return nil + } + out := new(DashboardJSONObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardJSONParameters) DeepCopyInto(out *DashboardJSONParameters) { + *out = *in + if in.Dashboard != nil { + in, out := &in.Dashboard, &out.Dashboard + *out = new(string) + **out = **in + } + if in.DashboardLists != nil { + in, out := &in.DashboardLists, &out.DashboardLists + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJSONParameters. +func (in *DashboardJSONParameters) DeepCopy() *DashboardJSONParameters { + if in == nil { + return nil + } + out := new(DashboardJSONParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardJSONSpec) DeepCopyInto(out *DashboardJSONSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJSONSpec. +func (in *DashboardJSONSpec) DeepCopy() *DashboardJSONSpec { + if in == nil { + return nil + } + out := new(DashboardJSONSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardJSONStatus) DeepCopyInto(out *DashboardJSONStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJSONStatus. +func (in *DashboardJSONStatus) DeepCopy() *DashboardJSONStatus { + if in == nil { + return nil + } + out := new(DashboardJSONStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardList) DeepCopyInto(out *DashboardList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardList. +func (in *DashboardList) DeepCopy() *DashboardList { + if in == nil { + return nil + } + out := new(DashboardList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DashboardList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardListInitParameters) DeepCopyInto(out *DashboardListInitParameters) { + *out = *in + if in.DashItem != nil { + in, out := &in.DashItem, &out.DashItem + *out = make([]DashItemInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardListInitParameters. +func (in *DashboardListInitParameters) DeepCopy() *DashboardListInitParameters { + if in == nil { + return nil + } + out := new(DashboardListInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardListList) DeepCopyInto(out *DashboardListList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DashboardList, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardListList. +func (in *DashboardListList) DeepCopy() *DashboardListList { + if in == nil { + return nil + } + out := new(DashboardListList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DashboardListList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardListObservation) DeepCopyInto(out *DashboardListObservation) { + *out = *in + if in.DashItem != nil { + in, out := &in.DashItem, &out.DashItem + *out = make([]DashItemObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardListObservation. +func (in *DashboardListObservation) DeepCopy() *DashboardListObservation { + if in == nil { + return nil + } + out := new(DashboardListObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardListParameters) DeepCopyInto(out *DashboardListParameters) { + *out = *in + if in.DashItem != nil { + in, out := &in.DashItem, &out.DashItem + *out = make([]DashItemParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardListParameters. +func (in *DashboardListParameters) DeepCopy() *DashboardListParameters { + if in == nil { + return nil + } + out := new(DashboardListParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardListSpec) DeepCopyInto(out *DashboardListSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardListSpec. +func (in *DashboardListSpec) DeepCopy() *DashboardListSpec { + if in == nil { + return nil + } + out := new(DashboardListSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DashboardListStatus) DeepCopyInto(out *DashboardListStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardListStatus. +func (in *DashboardListStatus) DeepCopy() *DashboardListStatus { + if in == nil { + return nil + } + out := new(DashboardListStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Downtime) DeepCopyInto(out *Downtime) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Downtime. +func (in *Downtime) DeepCopy() *Downtime { + if in == nil { + return nil + } + out := new(Downtime) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Downtime) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeInitParameters) DeepCopyInto(out *DowntimeInitParameters) { + *out = *in + if in.End != nil { + in, out := &in.End, &out.End + *out = new(float64) + **out = **in + } + if in.EndDate != nil { + in, out := &in.EndDate, &out.EndDate + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorID != nil { + in, out := &in.MonitorID, &out.MonitorID + *out = new(float64) + **out = **in + } + if in.MonitorTags != nil { + in, out := &in.MonitorTags, &out.MonitorTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MuteFirstRecoveryNotification != nil { + in, out := &in.MuteFirstRecoveryNotification, &out.MuteFirstRecoveryNotification + *out = new(bool) + **out = **in + } + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]RecurrenceInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(float64) + **out = **in + } + if in.StartDate != nil { + in, out := &in.StartDate, &out.StartDate + *out = new(string) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeInitParameters. +func (in *DowntimeInitParameters) DeepCopy() *DowntimeInitParameters { + if in == nil { + return nil + } + out := new(DowntimeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeList) DeepCopyInto(out *DowntimeList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Downtime, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeList. +func (in *DowntimeList) DeepCopy() *DowntimeList { + if in == nil { + return nil + } + out := new(DowntimeList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DowntimeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeObservation) DeepCopyInto(out *DowntimeObservation) { + *out = *in + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = new(bool) + **out = **in + } + if in.ActiveChildID != nil { + in, out := &in.ActiveChildID, &out.ActiveChildID + *out = new(float64) + **out = **in + } + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.End != nil { + in, out := &in.End, &out.End + *out = new(float64) + **out = **in + } + if in.EndDate != nil { + in, out := &in.EndDate, &out.EndDate + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorID != nil { + in, out := &in.MonitorID, &out.MonitorID + *out = new(float64) + **out = **in + } + if in.MonitorTags != nil { + in, out := &in.MonitorTags, &out.MonitorTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MuteFirstRecoveryNotification != nil { + in, out := &in.MuteFirstRecoveryNotification, &out.MuteFirstRecoveryNotification + *out = new(bool) + **out = **in + } + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]RecurrenceObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(float64) + **out = **in + } + if in.StartDate != nil { + in, out := &in.StartDate, &out.StartDate + *out = new(string) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeObservation. +func (in *DowntimeObservation) DeepCopy() *DowntimeObservation { + if in == nil { + return nil + } + out := new(DowntimeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeParameters) DeepCopyInto(out *DowntimeParameters) { + *out = *in + if in.End != nil { + in, out := &in.End, &out.End + *out = new(float64) + **out = **in + } + if in.EndDate != nil { + in, out := &in.EndDate, &out.EndDate + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorID != nil { + in, out := &in.MonitorID, &out.MonitorID + *out = new(float64) + **out = **in + } + if in.MonitorTags != nil { + in, out := &in.MonitorTags, &out.MonitorTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MuteFirstRecoveryNotification != nil { + in, out := &in.MuteFirstRecoveryNotification, &out.MuteFirstRecoveryNotification + *out = new(bool) + **out = **in + } + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]RecurrenceParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(float64) + **out = **in + } + if in.StartDate != nil { + in, out := &in.StartDate, &out.StartDate + *out = new(string) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeParameters. +func (in *DowntimeParameters) DeepCopy() *DowntimeParameters { + if in == nil { + return nil + } + out := new(DowntimeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeSchedule) DeepCopyInto(out *DowntimeSchedule) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeSchedule. +func (in *DowntimeSchedule) DeepCopy() *DowntimeSchedule { + if in == nil { + return nil + } + out := new(DowntimeSchedule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DowntimeSchedule) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeScheduleInitParameters) DeepCopyInto(out *DowntimeScheduleInitParameters) { + *out = *in + if in.DisplayTimezone != nil { + in, out := &in.DisplayTimezone, &out.DisplayTimezone + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorIdentifier != nil { + in, out := &in.MonitorIdentifier, &out.MonitorIdentifier + *out = new(MonitorIdentifierInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MuteFirstRecoveryNotification != nil { + in, out := &in.MuteFirstRecoveryNotification, &out.MuteFirstRecoveryNotification + *out = new(bool) + **out = **in + } + if in.NotifyEndStates != nil { + in, out := &in.NotifyEndStates, &out.NotifyEndStates + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NotifyEndTypes != nil { + in, out := &in.NotifyEndTypes, &out.NotifyEndTypes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.OneTimeSchedule != nil { + in, out := &in.OneTimeSchedule, &out.OneTimeSchedule + *out = new(OneTimeScheduleInitParameters) + (*in).DeepCopyInto(*out) + } + if in.RecurringSchedule != nil { + in, out := &in.RecurringSchedule, &out.RecurringSchedule + *out = new(RecurringScheduleInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeScheduleInitParameters. +func (in *DowntimeScheduleInitParameters) DeepCopy() *DowntimeScheduleInitParameters { + if in == nil { + return nil + } + out := new(DowntimeScheduleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeScheduleList) DeepCopyInto(out *DowntimeScheduleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DowntimeSchedule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeScheduleList. +func (in *DowntimeScheduleList) DeepCopy() *DowntimeScheduleList { + if in == nil { + return nil + } + out := new(DowntimeScheduleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DowntimeScheduleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeScheduleObservation) DeepCopyInto(out *DowntimeScheduleObservation) { + *out = *in + if in.DisplayTimezone != nil { + in, out := &in.DisplayTimezone, &out.DisplayTimezone + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorIdentifier != nil { + in, out := &in.MonitorIdentifier, &out.MonitorIdentifier + *out = new(MonitorIdentifierObservation) + (*in).DeepCopyInto(*out) + } + if in.MuteFirstRecoveryNotification != nil { + in, out := &in.MuteFirstRecoveryNotification, &out.MuteFirstRecoveryNotification + *out = new(bool) + **out = **in + } + if in.NotifyEndStates != nil { + in, out := &in.NotifyEndStates, &out.NotifyEndStates + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NotifyEndTypes != nil { + in, out := &in.NotifyEndTypes, &out.NotifyEndTypes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.OneTimeSchedule != nil { + in, out := &in.OneTimeSchedule, &out.OneTimeSchedule + *out = new(OneTimeScheduleObservation) + (*in).DeepCopyInto(*out) + } + if in.RecurringSchedule != nil { + in, out := &in.RecurringSchedule, &out.RecurringSchedule + *out = new(RecurringScheduleObservation) + (*in).DeepCopyInto(*out) + } + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeScheduleObservation. +func (in *DowntimeScheduleObservation) DeepCopy() *DowntimeScheduleObservation { + if in == nil { + return nil + } + out := new(DowntimeScheduleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeScheduleParameters) DeepCopyInto(out *DowntimeScheduleParameters) { + *out = *in + if in.DisplayTimezone != nil { + in, out := &in.DisplayTimezone, &out.DisplayTimezone + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorIdentifier != nil { + in, out := &in.MonitorIdentifier, &out.MonitorIdentifier + *out = new(MonitorIdentifierParameters) + (*in).DeepCopyInto(*out) + } + if in.MuteFirstRecoveryNotification != nil { + in, out := &in.MuteFirstRecoveryNotification, &out.MuteFirstRecoveryNotification + *out = new(bool) + **out = **in + } + if in.NotifyEndStates != nil { + in, out := &in.NotifyEndStates, &out.NotifyEndStates + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NotifyEndTypes != nil { + in, out := &in.NotifyEndTypes, &out.NotifyEndTypes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.OneTimeSchedule != nil { + in, out := &in.OneTimeSchedule, &out.OneTimeSchedule + *out = new(OneTimeScheduleParameters) + (*in).DeepCopyInto(*out) + } + if in.RecurringSchedule != nil { + in, out := &in.RecurringSchedule, &out.RecurringSchedule + *out = new(RecurringScheduleParameters) + (*in).DeepCopyInto(*out) + } + if in.Scope != nil { + in, out := &in.Scope, &out.Scope + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeScheduleParameters. +func (in *DowntimeScheduleParameters) DeepCopy() *DowntimeScheduleParameters { + if in == nil { + return nil + } + out := new(DowntimeScheduleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeScheduleSpec) DeepCopyInto(out *DowntimeScheduleSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeScheduleSpec. +func (in *DowntimeScheduleSpec) DeepCopy() *DowntimeScheduleSpec { + if in == nil { + return nil + } + out := new(DowntimeScheduleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeScheduleStatus) DeepCopyInto(out *DowntimeScheduleStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeScheduleStatus. +func (in *DowntimeScheduleStatus) DeepCopy() *DowntimeScheduleStatus { + if in == nil { + return nil + } + out := new(DowntimeScheduleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeSpec) DeepCopyInto(out *DowntimeSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeSpec. +func (in *DowntimeSpec) DeepCopy() *DowntimeSpec { + if in == nil { + return nil + } + out := new(DowntimeSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DowntimeStatus) DeepCopyInto(out *DowntimeStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DowntimeStatus. +func (in *DowntimeStatus) DeepCopy() *DowntimeStatus { + if in == nil { + return nil + } + out := new(DowntimeStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EntryInitParameters) DeepCopyInto(out *EntryInitParameters) { + *out = *in + if in.CidrBlock != nil { + in, out := &in.CidrBlock, &out.CidrBlock + *out = new(string) + **out = **in + } + if in.Note != nil { + in, out := &in.Note, &out.Note + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EntryInitParameters. +func (in *EntryInitParameters) DeepCopy() *EntryInitParameters { + if in == nil { + return nil + } + out := new(EntryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EntryObservation) DeepCopyInto(out *EntryObservation) { + *out = *in + if in.CidrBlock != nil { + in, out := &in.CidrBlock, &out.CidrBlock + *out = new(string) + **out = **in + } + if in.Note != nil { + in, out := &in.Note, &out.Note + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EntryObservation. +func (in *EntryObservation) DeepCopy() *EntryObservation { + if in == nil { + return nil + } + out := new(EntryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EntryParameters) DeepCopyInto(out *EntryParameters) { + *out = *in + if in.CidrBlock != nil { + in, out := &in.CidrBlock, &out.CidrBlock + *out = new(string) + **out = **in + } + if in.Note != nil { + in, out := &in.Note, &out.Note + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EntryParameters. +func (in *EntryParameters) DeepCopy() *EntryParameters { + if in == nil { + return nil + } + out := new(EntryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EvaluationWindowInitParameters) DeepCopyInto(out *EvaluationWindowInitParameters) { + *out = *in + if in.DayStarts != nil { + in, out := &in.DayStarts, &out.DayStarts + *out = new(string) + **out = **in + } + if in.HourStarts != nil { + in, out := &in.HourStarts, &out.HourStarts + *out = new(float64) + **out = **in + } + if in.MonthStarts != nil { + in, out := &in.MonthStarts, &out.MonthStarts + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvaluationWindowInitParameters. +func (in *EvaluationWindowInitParameters) DeepCopy() *EvaluationWindowInitParameters { + if in == nil { + return nil + } + out := new(EvaluationWindowInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EvaluationWindowObservation) DeepCopyInto(out *EvaluationWindowObservation) { + *out = *in + if in.DayStarts != nil { + in, out := &in.DayStarts, &out.DayStarts + *out = new(string) + **out = **in + } + if in.HourStarts != nil { + in, out := &in.HourStarts, &out.HourStarts + *out = new(float64) + **out = **in + } + if in.MonthStarts != nil { + in, out := &in.MonthStarts, &out.MonthStarts + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvaluationWindowObservation. +func (in *EvaluationWindowObservation) DeepCopy() *EvaluationWindowObservation { + if in == nil { + return nil + } + out := new(EvaluationWindowObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EvaluationWindowParameters) DeepCopyInto(out *EvaluationWindowParameters) { + *out = *in + if in.DayStarts != nil { + in, out := &in.DayStarts, &out.DayStarts + *out = new(string) + **out = **in + } + if in.HourStarts != nil { + in, out := &in.HourStarts, &out.HourStarts + *out = new(float64) + **out = **in + } + if in.MonthStarts != nil { + in, out := &in.MonthStarts, &out.MonthStarts + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvaluationWindowParameters. +func (in *EvaluationWindowParameters) DeepCopy() *EvaluationWindowParameters { + if in == nil { + return nil + } + out := new(EvaluationWindowParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EventQueryInitParameters) DeepCopyInto(out *EventQueryInitParameters) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = make([]ComputeInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]GroupByInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Indexes != nil { + in, out := &in.Indexes, &out.Indexes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Search != nil { + in, out := &in.Search, &out.Search + *out = make([]SearchInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EventQueryInitParameters. +func (in *EventQueryInitParameters) DeepCopy() *EventQueryInitParameters { + if in == nil { + return nil + } + out := new(EventQueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EventQueryObservation) DeepCopyInto(out *EventQueryObservation) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = make([]ComputeObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]GroupByObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Indexes != nil { + in, out := &in.Indexes, &out.Indexes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Search != nil { + in, out := &in.Search, &out.Search + *out = make([]SearchObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EventQueryObservation. +func (in *EventQueryObservation) DeepCopy() *EventQueryObservation { + if in == nil { + return nil + } + out := new(EventQueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EventQueryParameters) DeepCopyInto(out *EventQueryParameters) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = make([]ComputeParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]GroupByParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Indexes != nil { + in, out := &in.Indexes, &out.Indexes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Search != nil { + in, out := &in.Search, &out.Search + *out = make([]SearchParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EventQueryParameters. +func (in *EventQueryParameters) DeepCopy() *EventQueryParameters { + if in == nil { + return nil + } + out := new(EventQueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters) DeepCopyInto(out *FilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters. +func (in *FilterInitParameters) DeepCopy() *FilterInitParameters { + if in == nil { + return nil + } + out := new(FilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation) DeepCopyInto(out *FilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation. +func (in *FilterObservation) DeepCopy() *FilterObservation { + if in == nil { + return nil + } + out := new(FilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters) DeepCopyInto(out *FilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters. +func (in *FilterParameters) DeepCopy() *FilterParameters { + if in == nil { + return nil + } + out := new(FilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FormulaInitParameters) DeepCopyInto(out *FormulaInitParameters) { + *out = *in + if in.FormulaExpression != nil { + in, out := &in.FormulaExpression, &out.FormulaExpression + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FormulaInitParameters. +func (in *FormulaInitParameters) DeepCopy() *FormulaInitParameters { + if in == nil { + return nil + } + out := new(FormulaInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FormulaObservation) DeepCopyInto(out *FormulaObservation) { + *out = *in + if in.FormulaExpression != nil { + in, out := &in.FormulaExpression, &out.FormulaExpression + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FormulaObservation. +func (in *FormulaObservation) DeepCopy() *FormulaObservation { + if in == nil { + return nil + } + out := new(FormulaObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FormulaParameters) DeepCopyInto(out *FormulaParameters) { + *out = *in + if in.FormulaExpression != nil { + in, out := &in.FormulaExpression, &out.FormulaExpression + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FormulaParameters. +func (in *FormulaParameters) DeepCopy() *FormulaParameters { + if in == nil { + return nil + } + out := new(FormulaParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupByInitParameters) DeepCopyInto(out *GroupByInitParameters) { + *out = *in + if in.Facet != nil { + in, out := &in.Facet, &out.Facet + *out = new(string) + **out = **in + } + if in.Limit != nil { + in, out := &in.Limit, &out.Limit + *out = new(float64) + **out = **in + } + if in.Sort != nil { + in, out := &in.Sort, &out.Sort + *out = make([]SortInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupByInitParameters. +func (in *GroupByInitParameters) DeepCopy() *GroupByInitParameters { + if in == nil { + return nil + } + out := new(GroupByInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupByObservation) DeepCopyInto(out *GroupByObservation) { + *out = *in + if in.Facet != nil { + in, out := &in.Facet, &out.Facet + *out = new(string) + **out = **in + } + if in.Limit != nil { + in, out := &in.Limit, &out.Limit + *out = new(float64) + **out = **in + } + if in.Sort != nil { + in, out := &in.Sort, &out.Sort + *out = make([]SortObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupByObservation. +func (in *GroupByObservation) DeepCopy() *GroupByObservation { + if in == nil { + return nil + } + out := new(GroupByObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupByParameters) DeepCopyInto(out *GroupByParameters) { + *out = *in + if in.Facet != nil { + in, out := &in.Facet, &out.Facet + *out = new(string) + **out = **in + } + if in.Limit != nil { + in, out := &in.Limit, &out.Limit + *out = new(float64) + **out = **in + } + if in.Sort != nil { + in, out := &in.Sort, &out.Sort + *out = make([]SortParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupByParameters. +func (in *GroupByParameters) DeepCopy() *GroupByParameters { + if in == nil { + return nil + } + out := new(GroupByParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllowList) DeepCopyInto(out *IPAllowList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllowList. +func (in *IPAllowList) DeepCopy() *IPAllowList { + if in == nil { + return nil + } + out := new(IPAllowList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IPAllowList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllowListInitParameters) DeepCopyInto(out *IPAllowListInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Entry != nil { + in, out := &in.Entry, &out.Entry + *out = make([]EntryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllowListInitParameters. +func (in *IPAllowListInitParameters) DeepCopy() *IPAllowListInitParameters { + if in == nil { + return nil + } + out := new(IPAllowListInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllowListList) DeepCopyInto(out *IPAllowListList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IPAllowList, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllowListList. +func (in *IPAllowListList) DeepCopy() *IPAllowListList { + if in == nil { + return nil + } + out := new(IPAllowListList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IPAllowListList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllowListObservation) DeepCopyInto(out *IPAllowListObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Entry != nil { + in, out := &in.Entry, &out.Entry + *out = make([]EntryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllowListObservation. +func (in *IPAllowListObservation) DeepCopy() *IPAllowListObservation { + if in == nil { + return nil + } + out := new(IPAllowListObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllowListParameters) DeepCopyInto(out *IPAllowListParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Entry != nil { + in, out := &in.Entry, &out.Entry + *out = make([]EntryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllowListParameters. +func (in *IPAllowListParameters) DeepCopy() *IPAllowListParameters { + if in == nil { + return nil + } + out := new(IPAllowListParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllowListSpec) DeepCopyInto(out *IPAllowListSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllowListSpec. +func (in *IPAllowListSpec) DeepCopy() *IPAllowListSpec { + if in == nil { + return nil + } + out := new(IPAllowListSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAllowListStatus) DeepCopyInto(out *IPAllowListStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAllowListStatus. +func (in *IPAllowListStatus) DeepCopy() *IPAllowListStatus { + if in == nil { + return nil + } + out := new(IPAllowListStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LayoutInitParameters) DeepCopyInto(out *LayoutInitParameters) { + *out = *in + if in.Height != nil { + in, out := &in.Height, &out.Height + *out = new(float64) + **out = **in + } + if in.Width != nil { + in, out := &in.Width, &out.Width + *out = new(float64) + **out = **in + } + if in.X != nil { + in, out := &in.X, &out.X + *out = new(float64) + **out = **in + } + if in.Y != nil { + in, out := &in.Y, &out.Y + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LayoutInitParameters. +func (in *LayoutInitParameters) DeepCopy() *LayoutInitParameters { + if in == nil { + return nil + } + out := new(LayoutInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LayoutObservation) DeepCopyInto(out *LayoutObservation) { + *out = *in + if in.Height != nil { + in, out := &in.Height, &out.Height + *out = new(float64) + **out = **in + } + if in.Width != nil { + in, out := &in.Width, &out.Width + *out = new(float64) + **out = **in + } + if in.X != nil { + in, out := &in.X, &out.X + *out = new(float64) + **out = **in + } + if in.Y != nil { + in, out := &in.Y, &out.Y + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LayoutObservation. +func (in *LayoutObservation) DeepCopy() *LayoutObservation { + if in == nil { + return nil + } + out := new(LayoutObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LayoutParameters) DeepCopyInto(out *LayoutParameters) { + *out = *in + if in.Height != nil { + in, out := &in.Height, &out.Height + *out = new(float64) + **out = **in + } + if in.Width != nil { + in, out := &in.Width, &out.Width + *out = new(float64) + **out = **in + } + if in.X != nil { + in, out := &in.X, &out.X + *out = new(float64) + **out = **in + } + if in.Y != nil { + in, out := &in.Y, &out.Y + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LayoutParameters. +func (in *LayoutParameters) DeepCopy() *LayoutParameters { + if in == nil { + return nil + } + out := new(LayoutParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricQueryInitParameters) DeepCopyInto(out *MetricQueryInitParameters) { + *out = *in + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricQueryInitParameters. +func (in *MetricQueryInitParameters) DeepCopy() *MetricQueryInitParameters { + if in == nil { + return nil + } + out := new(MetricQueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricQueryObservation) DeepCopyInto(out *MetricQueryObservation) { + *out = *in + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricQueryObservation. +func (in *MetricQueryObservation) DeepCopy() *MetricQueryObservation { + if in == nil { + return nil + } + out := new(MetricQueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricQueryParameters) DeepCopyInto(out *MetricQueryParameters) { + *out = *in + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricQueryParameters. +func (in *MetricQueryParameters) DeepCopy() *MetricQueryParameters { + if in == nil { + return nil + } + out := new(MetricQueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Monitor) DeepCopyInto(out *Monitor) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Monitor. +func (in *Monitor) DeepCopy() *Monitor { + if in == nil { + return nil + } + out := new(Monitor) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Monitor) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorConfigPolicy) DeepCopyInto(out *MonitorConfigPolicy) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorConfigPolicy. +func (in *MonitorConfigPolicy) DeepCopy() *MonitorConfigPolicy { + if in == nil { + return nil + } + out := new(MonitorConfigPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MonitorConfigPolicy) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorConfigPolicyInitParameters) DeepCopyInto(out *MonitorConfigPolicyInitParameters) { + *out = *in + if in.PolicyType != nil { + in, out := &in.PolicyType, &out.PolicyType + *out = new(string) + **out = **in + } + if in.TagPolicy != nil { + in, out := &in.TagPolicy, &out.TagPolicy + *out = make([]TagPolicyInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorConfigPolicyInitParameters. +func (in *MonitorConfigPolicyInitParameters) DeepCopy() *MonitorConfigPolicyInitParameters { + if in == nil { + return nil + } + out := new(MonitorConfigPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorConfigPolicyList) DeepCopyInto(out *MonitorConfigPolicyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]MonitorConfigPolicy, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorConfigPolicyList. +func (in *MonitorConfigPolicyList) DeepCopy() *MonitorConfigPolicyList { + if in == nil { + return nil + } + out := new(MonitorConfigPolicyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MonitorConfigPolicyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorConfigPolicyObservation) DeepCopyInto(out *MonitorConfigPolicyObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.PolicyType != nil { + in, out := &in.PolicyType, &out.PolicyType + *out = new(string) + **out = **in + } + if in.TagPolicy != nil { + in, out := &in.TagPolicy, &out.TagPolicy + *out = make([]TagPolicyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorConfigPolicyObservation. +func (in *MonitorConfigPolicyObservation) DeepCopy() *MonitorConfigPolicyObservation { + if in == nil { + return nil + } + out := new(MonitorConfigPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorConfigPolicyParameters) DeepCopyInto(out *MonitorConfigPolicyParameters) { + *out = *in + if in.PolicyType != nil { + in, out := &in.PolicyType, &out.PolicyType + *out = new(string) + **out = **in + } + if in.TagPolicy != nil { + in, out := &in.TagPolicy, &out.TagPolicy + *out = make([]TagPolicyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorConfigPolicyParameters. +func (in *MonitorConfigPolicyParameters) DeepCopy() *MonitorConfigPolicyParameters { + if in == nil { + return nil + } + out := new(MonitorConfigPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorConfigPolicySpec) DeepCopyInto(out *MonitorConfigPolicySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorConfigPolicySpec. +func (in *MonitorConfigPolicySpec) DeepCopy() *MonitorConfigPolicySpec { + if in == nil { + return nil + } + out := new(MonitorConfigPolicySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorConfigPolicyStatus) DeepCopyInto(out *MonitorConfigPolicyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorConfigPolicyStatus. +func (in *MonitorConfigPolicyStatus) DeepCopy() *MonitorConfigPolicyStatus { + if in == nil { + return nil + } + out := new(MonitorConfigPolicyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorIdentifierInitParameters) DeepCopyInto(out *MonitorIdentifierInitParameters) { + *out = *in + if in.MonitorID != nil { + in, out := &in.MonitorID, &out.MonitorID + *out = new(float64) + **out = **in + } + if in.MonitorTags != nil { + in, out := &in.MonitorTags, &out.MonitorTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorIdentifierInitParameters. +func (in *MonitorIdentifierInitParameters) DeepCopy() *MonitorIdentifierInitParameters { + if in == nil { + return nil + } + out := new(MonitorIdentifierInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorIdentifierObservation) DeepCopyInto(out *MonitorIdentifierObservation) { + *out = *in + if in.MonitorID != nil { + in, out := &in.MonitorID, &out.MonitorID + *out = new(float64) + **out = **in + } + if in.MonitorTags != nil { + in, out := &in.MonitorTags, &out.MonitorTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorIdentifierObservation. +func (in *MonitorIdentifierObservation) DeepCopy() *MonitorIdentifierObservation { + if in == nil { + return nil + } + out := new(MonitorIdentifierObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorIdentifierParameters) DeepCopyInto(out *MonitorIdentifierParameters) { + *out = *in + if in.MonitorID != nil { + in, out := &in.MonitorID, &out.MonitorID + *out = new(float64) + **out = **in + } + if in.MonitorTags != nil { + in, out := &in.MonitorTags, &out.MonitorTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorIdentifierParameters. +func (in *MonitorIdentifierParameters) DeepCopy() *MonitorIdentifierParameters { + if in == nil { + return nil + } + out := new(MonitorIdentifierParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorInitParameters) DeepCopyInto(out *MonitorInitParameters) { + *out = *in + if in.EnableLogsSample != nil { + in, out := &in.EnableLogsSample, &out.EnableLogsSample + *out = new(bool) + **out = **in + } + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.EvaluationDelay != nil { + in, out := &in.EvaluationDelay, &out.EvaluationDelay + *out = new(float64) + **out = **in + } + if in.ForceDelete != nil { + in, out := &in.ForceDelete, &out.ForceDelete + *out = new(bool) + **out = **in + } + if in.GroupRetentionDuration != nil { + in, out := &in.GroupRetentionDuration, &out.GroupRetentionDuration + *out = new(string) + **out = **in + } + if in.GroupbySimpleMonitor != nil { + in, out := &in.GroupbySimpleMonitor, &out.GroupbySimpleMonitor + *out = new(bool) + **out = **in + } + if in.IncludeTags != nil { + in, out := &in.IncludeTags, &out.IncludeTags + *out = new(bool) + **out = **in + } + if in.Locked != nil { + in, out := &in.Locked, &out.Locked + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorThresholdWindows != nil { + in, out := &in.MonitorThresholdWindows, &out.MonitorThresholdWindows + *out = make([]MonitorThresholdWindowsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MonitorThresholds != nil { + in, out := &in.MonitorThresholds, &out.MonitorThresholds + *out = make([]MonitorThresholdsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NewGroupDelay != nil { + in, out := &in.NewGroupDelay, &out.NewGroupDelay + *out = new(float64) + **out = **in + } + if in.NewHostDelay != nil { + in, out := &in.NewHostDelay, &out.NewHostDelay + *out = new(float64) + **out = **in + } + if in.NoDataTimeframe != nil { + in, out := &in.NoDataTimeframe, &out.NoDataTimeframe + *out = new(float64) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *out = new(string) + **out = **in + } + if in.NotifyAudit != nil { + in, out := &in.NotifyAudit, &out.NotifyAudit + *out = new(bool) + **out = **in + } + if in.NotifyBy != nil { + in, out := &in.NotifyBy, &out.NotifyBy + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NotifyNoData != nil { + in, out := &in.NotifyNoData, &out.NotifyNoData + *out = new(bool) + **out = **in + } + if in.OnMissingData != nil { + in, out := &in.OnMissingData, &out.OnMissingData + *out = new(string) + **out = **in + } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(float64) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.RenotifyInterval != nil { + in, out := &in.RenotifyInterval, &out.RenotifyInterval + *out = new(float64) + **out = **in + } + if in.RenotifyOccurrences != nil { + in, out := &in.RenotifyOccurrences, &out.RenotifyOccurrences + *out = new(float64) + **out = **in + } + if in.RenotifyStatuses != nil { + in, out := &in.RenotifyStatuses, &out.RenotifyStatuses + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.RequireFullWindow != nil { + in, out := &in.RequireFullWindow, &out.RequireFullWindow + *out = new(bool) + **out = **in + } + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SchedulingOptions != nil { + in, out := &in.SchedulingOptions, &out.SchedulingOptions + *out = make([]SchedulingOptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TimeoutH != nil { + in, out := &in.TimeoutH, &out.TimeoutH + *out = new(float64) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } + if in.Variables != nil { + in, out := &in.Variables, &out.Variables + *out = make([]VariablesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorInitParameters. +func (in *MonitorInitParameters) DeepCopy() *MonitorInitParameters { + if in == nil { + return nil + } + out := new(MonitorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorJSON) DeepCopyInto(out *MonitorJSON) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorJSON. +func (in *MonitorJSON) DeepCopy() *MonitorJSON { + if in == nil { + return nil + } + out := new(MonitorJSON) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MonitorJSON) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorJSONInitParameters) DeepCopyInto(out *MonitorJSONInitParameters) { + *out = *in + if in.Monitor != nil { + in, out := &in.Monitor, &out.Monitor + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorJSONInitParameters. +func (in *MonitorJSONInitParameters) DeepCopy() *MonitorJSONInitParameters { + if in == nil { + return nil + } + out := new(MonitorJSONInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorJSONList) DeepCopyInto(out *MonitorJSONList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]MonitorJSON, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorJSONList. +func (in *MonitorJSONList) DeepCopy() *MonitorJSONList { + if in == nil { + return nil + } + out := new(MonitorJSONList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MonitorJSONList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorJSONObservation) DeepCopyInto(out *MonitorJSONObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Monitor != nil { + in, out := &in.Monitor, &out.Monitor + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorJSONObservation. +func (in *MonitorJSONObservation) DeepCopy() *MonitorJSONObservation { + if in == nil { + return nil + } + out := new(MonitorJSONObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorJSONParameters) DeepCopyInto(out *MonitorJSONParameters) { + *out = *in + if in.Monitor != nil { + in, out := &in.Monitor, &out.Monitor + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorJSONParameters. +func (in *MonitorJSONParameters) DeepCopy() *MonitorJSONParameters { + if in == nil { + return nil + } + out := new(MonitorJSONParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorJSONSpec) DeepCopyInto(out *MonitorJSONSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorJSONSpec. +func (in *MonitorJSONSpec) DeepCopy() *MonitorJSONSpec { + if in == nil { + return nil + } + out := new(MonitorJSONSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorJSONStatus) DeepCopyInto(out *MonitorJSONStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorJSONStatus. +func (in *MonitorJSONStatus) DeepCopy() *MonitorJSONStatus { + if in == nil { + return nil + } + out := new(MonitorJSONStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorList) DeepCopyInto(out *MonitorList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Monitor, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorList. +func (in *MonitorList) DeepCopy() *MonitorList { + if in == nil { + return nil + } + out := new(MonitorList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MonitorList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorObservation) DeepCopyInto(out *MonitorObservation) { + *out = *in + if in.EnableLogsSample != nil { + in, out := &in.EnableLogsSample, &out.EnableLogsSample + *out = new(bool) + **out = **in + } + if in.EnableSamples != nil { + in, out := &in.EnableSamples, &out.EnableSamples + *out = new(bool) + **out = **in + } + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.EvaluationDelay != nil { + in, out := &in.EvaluationDelay, &out.EvaluationDelay + *out = new(float64) + **out = **in + } + if in.ForceDelete != nil { + in, out := &in.ForceDelete, &out.ForceDelete + *out = new(bool) + **out = **in + } + if in.GroupRetentionDuration != nil { + in, out := &in.GroupRetentionDuration, &out.GroupRetentionDuration + *out = new(string) + **out = **in + } + if in.GroupbySimpleMonitor != nil { + in, out := &in.GroupbySimpleMonitor, &out.GroupbySimpleMonitor + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IncludeTags != nil { + in, out := &in.IncludeTags, &out.IncludeTags + *out = new(bool) + **out = **in + } + if in.Locked != nil { + in, out := &in.Locked, &out.Locked + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorThresholdWindows != nil { + in, out := &in.MonitorThresholdWindows, &out.MonitorThresholdWindows + *out = make([]MonitorThresholdWindowsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MonitorThresholds != nil { + in, out := &in.MonitorThresholds, &out.MonitorThresholds + *out = make([]MonitorThresholdsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NewGroupDelay != nil { + in, out := &in.NewGroupDelay, &out.NewGroupDelay + *out = new(float64) + **out = **in + } + if in.NewHostDelay != nil { + in, out := &in.NewHostDelay, &out.NewHostDelay + *out = new(float64) + **out = **in + } + if in.NoDataTimeframe != nil { + in, out := &in.NoDataTimeframe, &out.NoDataTimeframe + *out = new(float64) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *out = new(string) + **out = **in + } + if in.NotifyAudit != nil { + in, out := &in.NotifyAudit, &out.NotifyAudit + *out = new(bool) + **out = **in + } + if in.NotifyBy != nil { + in, out := &in.NotifyBy, &out.NotifyBy + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NotifyNoData != nil { + in, out := &in.NotifyNoData, &out.NotifyNoData + *out = new(bool) + **out = **in + } + if in.OnMissingData != nil { + in, out := &in.OnMissingData, &out.OnMissingData + *out = new(string) + **out = **in + } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(float64) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.RenotifyInterval != nil { + in, out := &in.RenotifyInterval, &out.RenotifyInterval + *out = new(float64) + **out = **in + } + if in.RenotifyOccurrences != nil { + in, out := &in.RenotifyOccurrences, &out.RenotifyOccurrences + *out = new(float64) + **out = **in + } + if in.RenotifyStatuses != nil { + in, out := &in.RenotifyStatuses, &out.RenotifyStatuses + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.RequireFullWindow != nil { + in, out := &in.RequireFullWindow, &out.RequireFullWindow + *out = new(bool) + **out = **in + } + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SchedulingOptions != nil { + in, out := &in.SchedulingOptions, &out.SchedulingOptions + *out = make([]SchedulingOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TimeoutH != nil { + in, out := &in.TimeoutH, &out.TimeoutH + *out = new(float64) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } + if in.Variables != nil { + in, out := &in.Variables, &out.Variables + *out = make([]VariablesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorObservation. +func (in *MonitorObservation) DeepCopy() *MonitorObservation { + if in == nil { + return nil + } + out := new(MonitorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorParameters) DeepCopyInto(out *MonitorParameters) { + *out = *in + if in.EnableLogsSample != nil { + in, out := &in.EnableLogsSample, &out.EnableLogsSample + *out = new(bool) + **out = **in + } + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.EvaluationDelay != nil { + in, out := &in.EvaluationDelay, &out.EvaluationDelay + *out = new(float64) + **out = **in + } + if in.ForceDelete != nil { + in, out := &in.ForceDelete, &out.ForceDelete + *out = new(bool) + **out = **in + } + if in.GroupRetentionDuration != nil { + in, out := &in.GroupRetentionDuration, &out.GroupRetentionDuration + *out = new(string) + **out = **in + } + if in.GroupbySimpleMonitor != nil { + in, out := &in.GroupbySimpleMonitor, &out.GroupbySimpleMonitor + *out = new(bool) + **out = **in + } + if in.IncludeTags != nil { + in, out := &in.IncludeTags, &out.IncludeTags + *out = new(bool) + **out = **in + } + if in.Locked != nil { + in, out := &in.Locked, &out.Locked + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.MonitorThresholdWindows != nil { + in, out := &in.MonitorThresholdWindows, &out.MonitorThresholdWindows + *out = make([]MonitorThresholdWindowsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MonitorThresholds != nil { + in, out := &in.MonitorThresholds, &out.MonitorThresholds + *out = make([]MonitorThresholdsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NewGroupDelay != nil { + in, out := &in.NewGroupDelay, &out.NewGroupDelay + *out = new(float64) + **out = **in + } + if in.NewHostDelay != nil { + in, out := &in.NewHostDelay, &out.NewHostDelay + *out = new(float64) + **out = **in + } + if in.NoDataTimeframe != nil { + in, out := &in.NoDataTimeframe, &out.NoDataTimeframe + *out = new(float64) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *out = new(string) + **out = **in + } + if in.NotifyAudit != nil { + in, out := &in.NotifyAudit, &out.NotifyAudit + *out = new(bool) + **out = **in + } + if in.NotifyBy != nil { + in, out := &in.NotifyBy, &out.NotifyBy + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.NotifyNoData != nil { + in, out := &in.NotifyNoData, &out.NotifyNoData + *out = new(bool) + **out = **in + } + if in.OnMissingData != nil { + in, out := &in.OnMissingData, &out.OnMissingData + *out = new(string) + **out = **in + } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(float64) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.RenotifyInterval != nil { + in, out := &in.RenotifyInterval, &out.RenotifyInterval + *out = new(float64) + **out = **in + } + if in.RenotifyOccurrences != nil { + in, out := &in.RenotifyOccurrences, &out.RenotifyOccurrences + *out = new(float64) + **out = **in + } + if in.RenotifyStatuses != nil { + in, out := &in.RenotifyStatuses, &out.RenotifyStatuses + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.RequireFullWindow != nil { + in, out := &in.RequireFullWindow, &out.RequireFullWindow + *out = new(bool) + **out = **in + } + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SchedulingOptions != nil { + in, out := &in.SchedulingOptions, &out.SchedulingOptions + *out = make([]SchedulingOptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TimeoutH != nil { + in, out := &in.TimeoutH, &out.TimeoutH + *out = new(float64) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } + if in.Variables != nil { + in, out := &in.Variables, &out.Variables + *out = make([]VariablesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorParameters. +func (in *MonitorParameters) DeepCopy() *MonitorParameters { + if in == nil { + return nil + } + out := new(MonitorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorSpec) DeepCopyInto(out *MonitorSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorSpec. +func (in *MonitorSpec) DeepCopy() *MonitorSpec { + if in == nil { + return nil + } + out := new(MonitorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorStatus) DeepCopyInto(out *MonitorStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorStatus. +func (in *MonitorStatus) DeepCopy() *MonitorStatus { + if in == nil { + return nil + } + out := new(MonitorStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorThresholdWindowsInitParameters) DeepCopyInto(out *MonitorThresholdWindowsInitParameters) { + *out = *in + if in.RecoveryWindow != nil { + in, out := &in.RecoveryWindow, &out.RecoveryWindow + *out = new(string) + **out = **in + } + if in.TriggerWindow != nil { + in, out := &in.TriggerWindow, &out.TriggerWindow + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorThresholdWindowsInitParameters. +func (in *MonitorThresholdWindowsInitParameters) DeepCopy() *MonitorThresholdWindowsInitParameters { + if in == nil { + return nil + } + out := new(MonitorThresholdWindowsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorThresholdWindowsObservation) DeepCopyInto(out *MonitorThresholdWindowsObservation) { + *out = *in + if in.RecoveryWindow != nil { + in, out := &in.RecoveryWindow, &out.RecoveryWindow + *out = new(string) + **out = **in + } + if in.TriggerWindow != nil { + in, out := &in.TriggerWindow, &out.TriggerWindow + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorThresholdWindowsObservation. +func (in *MonitorThresholdWindowsObservation) DeepCopy() *MonitorThresholdWindowsObservation { + if in == nil { + return nil + } + out := new(MonitorThresholdWindowsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorThresholdWindowsParameters) DeepCopyInto(out *MonitorThresholdWindowsParameters) { + *out = *in + if in.RecoveryWindow != nil { + in, out := &in.RecoveryWindow, &out.RecoveryWindow + *out = new(string) + **out = **in + } + if in.TriggerWindow != nil { + in, out := &in.TriggerWindow, &out.TriggerWindow + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorThresholdWindowsParameters. +func (in *MonitorThresholdWindowsParameters) DeepCopy() *MonitorThresholdWindowsParameters { + if in == nil { + return nil + } + out := new(MonitorThresholdWindowsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorThresholdsInitParameters) DeepCopyInto(out *MonitorThresholdsInitParameters) { + *out = *in + if in.Critical != nil { + in, out := &in.Critical, &out.Critical + *out = new(string) + **out = **in + } + if in.CriticalRecovery != nil { + in, out := &in.CriticalRecovery, &out.CriticalRecovery + *out = new(string) + **out = **in + } + if in.Ok != nil { + in, out := &in.Ok, &out.Ok + *out = new(string) + **out = **in + } + if in.Unknown != nil { + in, out := &in.Unknown, &out.Unknown + *out = new(string) + **out = **in + } + if in.Warning != nil { + in, out := &in.Warning, &out.Warning + *out = new(string) + **out = **in + } + if in.WarningRecovery != nil { + in, out := &in.WarningRecovery, &out.WarningRecovery + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorThresholdsInitParameters. +func (in *MonitorThresholdsInitParameters) DeepCopy() *MonitorThresholdsInitParameters { + if in == nil { + return nil + } + out := new(MonitorThresholdsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorThresholdsObservation) DeepCopyInto(out *MonitorThresholdsObservation) { + *out = *in + if in.Critical != nil { + in, out := &in.Critical, &out.Critical + *out = new(string) + **out = **in + } + if in.CriticalRecovery != nil { + in, out := &in.CriticalRecovery, &out.CriticalRecovery + *out = new(string) + **out = **in + } + if in.Ok != nil { + in, out := &in.Ok, &out.Ok + *out = new(string) + **out = **in + } + if in.Unknown != nil { + in, out := &in.Unknown, &out.Unknown + *out = new(string) + **out = **in + } + if in.Warning != nil { + in, out := &in.Warning, &out.Warning + *out = new(string) + **out = **in + } + if in.WarningRecovery != nil { + in, out := &in.WarningRecovery, &out.WarningRecovery + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorThresholdsObservation. +func (in *MonitorThresholdsObservation) DeepCopy() *MonitorThresholdsObservation { + if in == nil { + return nil + } + out := new(MonitorThresholdsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorThresholdsParameters) DeepCopyInto(out *MonitorThresholdsParameters) { + *out = *in + if in.Critical != nil { + in, out := &in.Critical, &out.Critical + *out = new(string) + **out = **in + } + if in.CriticalRecovery != nil { + in, out := &in.CriticalRecovery, &out.CriticalRecovery + *out = new(string) + **out = **in + } + if in.Ok != nil { + in, out := &in.Ok, &out.Ok + *out = new(string) + **out = **in + } + if in.Unknown != nil { + in, out := &in.Unknown, &out.Unknown + *out = new(string) + **out = **in + } + if in.Warning != nil { + in, out := &in.Warning, &out.Warning + *out = new(string) + **out = **in + } + if in.WarningRecovery != nil { + in, out := &in.WarningRecovery, &out.WarningRecovery + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorThresholdsParameters. +func (in *MonitorThresholdsParameters) DeepCopy() *MonitorThresholdsParameters { + if in == nil { + return nil + } + out := new(MonitorThresholdsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OneTimeScheduleInitParameters) DeepCopyInto(out *OneTimeScheduleInitParameters) { + *out = *in + if in.End != nil { + in, out := &in.End, &out.End + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OneTimeScheduleInitParameters. +func (in *OneTimeScheduleInitParameters) DeepCopy() *OneTimeScheduleInitParameters { + if in == nil { + return nil + } + out := new(OneTimeScheduleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OneTimeScheduleObservation) DeepCopyInto(out *OneTimeScheduleObservation) { + *out = *in + if in.End != nil { + in, out := &in.End, &out.End + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OneTimeScheduleObservation. +func (in *OneTimeScheduleObservation) DeepCopy() *OneTimeScheduleObservation { + if in == nil { + return nil + } + out := new(OneTimeScheduleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OneTimeScheduleParameters) DeepCopyInto(out *OneTimeScheduleParameters) { + *out = *in + if in.End != nil { + in, out := &in.End, &out.End + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OneTimeScheduleParameters. +func (in *OneTimeScheduleParameters) DeepCopy() *OneTimeScheduleParameters { + if in == nil { + return nil + } + out := new(OneTimeScheduleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettings) DeepCopyInto(out *OrganizationSettings) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettings. +func (in *OrganizationSettings) DeepCopy() *OrganizationSettings { + if in == nil { + return nil + } + out := new(OrganizationSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OrganizationSettings) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsInitParameters) DeepCopyInto(out *OrganizationSettingsInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Settings != nil { + in, out := &in.Settings, &out.Settings + *out = make([]OrganizationSettingsSettingsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsInitParameters. +func (in *OrganizationSettingsInitParameters) DeepCopy() *OrganizationSettingsInitParameters { + if in == nil { + return nil + } + out := new(OrganizationSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsList) DeepCopyInto(out *OrganizationSettingsList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]OrganizationSettings, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsList. +func (in *OrganizationSettingsList) DeepCopy() *OrganizationSettingsList { + if in == nil { + return nil + } + out := new(OrganizationSettingsList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OrganizationSettingsList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsObservation) DeepCopyInto(out *OrganizationSettingsObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PublicID != nil { + in, out := &in.PublicID, &out.PublicID + *out = new(string) + **out = **in + } + if in.Settings != nil { + in, out := &in.Settings, &out.Settings + *out = make([]OrganizationSettingsSettingsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsObservation. +func (in *OrganizationSettingsObservation) DeepCopy() *OrganizationSettingsObservation { + if in == nil { + return nil + } + out := new(OrganizationSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsParameters) DeepCopyInto(out *OrganizationSettingsParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Settings != nil { + in, out := &in.Settings, &out.Settings + *out = make([]OrganizationSettingsSettingsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsParameters. +func (in *OrganizationSettingsParameters) DeepCopy() *OrganizationSettingsParameters { + if in == nil { + return nil + } + out := new(OrganizationSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsSettingsInitParameters) DeepCopyInto(out *OrganizationSettingsSettingsInitParameters) { + *out = *in + if in.PrivateWidgetShare != nil { + in, out := &in.PrivateWidgetShare, &out.PrivateWidgetShare + *out = new(bool) + **out = **in + } + if in.SAML != nil { + in, out := &in.SAML, &out.SAML + *out = make([]SettingsSAMLInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLAutocreateAccessRole != nil { + in, out := &in.SAMLAutocreateAccessRole, &out.SAMLAutocreateAccessRole + *out = new(string) + **out = **in + } + if in.SAMLAutocreateUsersDomains != nil { + in, out := &in.SAMLAutocreateUsersDomains, &out.SAMLAutocreateUsersDomains + *out = make([]SettingsSAMLAutocreateUsersDomainsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLIdpInitiatedLogin != nil { + in, out := &in.SAMLIdpInitiatedLogin, &out.SAMLIdpInitiatedLogin + *out = make([]SettingsSAMLIdpInitiatedLoginInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLStrictMode != nil { + in, out := &in.SAMLStrictMode, &out.SAMLStrictMode + *out = make([]SettingsSAMLStrictModeInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsSettingsInitParameters. +func (in *OrganizationSettingsSettingsInitParameters) DeepCopy() *OrganizationSettingsSettingsInitParameters { + if in == nil { + return nil + } + out := new(OrganizationSettingsSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsSettingsObservation) DeepCopyInto(out *OrganizationSettingsSettingsObservation) { + *out = *in + if in.PrivateWidgetShare != nil { + in, out := &in.PrivateWidgetShare, &out.PrivateWidgetShare + *out = new(bool) + **out = **in + } + if in.SAML != nil { + in, out := &in.SAML, &out.SAML + *out = make([]SettingsSAMLObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLAutocreateAccessRole != nil { + in, out := &in.SAMLAutocreateAccessRole, &out.SAMLAutocreateAccessRole + *out = new(string) + **out = **in + } + if in.SAMLAutocreateUsersDomains != nil { + in, out := &in.SAMLAutocreateUsersDomains, &out.SAMLAutocreateUsersDomains + *out = make([]SettingsSAMLAutocreateUsersDomainsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLCanBeEnabled != nil { + in, out := &in.SAMLCanBeEnabled, &out.SAMLCanBeEnabled + *out = new(bool) + **out = **in + } + if in.SAMLIdpEndpoint != nil { + in, out := &in.SAMLIdpEndpoint, &out.SAMLIdpEndpoint + *out = new(string) + **out = **in + } + if in.SAMLIdpInitiatedLogin != nil { + in, out := &in.SAMLIdpInitiatedLogin, &out.SAMLIdpInitiatedLogin + *out = make([]SettingsSAMLIdpInitiatedLoginObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLIdpMetadataUploaded != nil { + in, out := &in.SAMLIdpMetadataUploaded, &out.SAMLIdpMetadataUploaded + *out = new(bool) + **out = **in + } + if in.SAMLLoginURL != nil { + in, out := &in.SAMLLoginURL, &out.SAMLLoginURL + *out = new(string) + **out = **in + } + if in.SAMLStrictMode != nil { + in, out := &in.SAMLStrictMode, &out.SAMLStrictMode + *out = make([]SettingsSAMLStrictModeObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsSettingsObservation. +func (in *OrganizationSettingsSettingsObservation) DeepCopy() *OrganizationSettingsSettingsObservation { + if in == nil { + return nil + } + out := new(OrganizationSettingsSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsSettingsParameters) DeepCopyInto(out *OrganizationSettingsSettingsParameters) { + *out = *in + if in.PrivateWidgetShare != nil { + in, out := &in.PrivateWidgetShare, &out.PrivateWidgetShare + *out = new(bool) + **out = **in + } + if in.SAML != nil { + in, out := &in.SAML, &out.SAML + *out = make([]SettingsSAMLParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLAutocreateAccessRole != nil { + in, out := &in.SAMLAutocreateAccessRole, &out.SAMLAutocreateAccessRole + *out = new(string) + **out = **in + } + if in.SAMLAutocreateUsersDomains != nil { + in, out := &in.SAMLAutocreateUsersDomains, &out.SAMLAutocreateUsersDomains + *out = make([]SettingsSAMLAutocreateUsersDomainsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLIdpInitiatedLogin != nil { + in, out := &in.SAMLIdpInitiatedLogin, &out.SAMLIdpInitiatedLogin + *out = make([]SettingsSAMLIdpInitiatedLoginParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLStrictMode != nil { + in, out := &in.SAMLStrictMode, &out.SAMLStrictMode + *out = make([]SettingsSAMLStrictModeParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsSettingsParameters. +func (in *OrganizationSettingsSettingsParameters) DeepCopy() *OrganizationSettingsSettingsParameters { + if in == nil { + return nil + } + out := new(OrganizationSettingsSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsSpec) DeepCopyInto(out *OrganizationSettingsSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsSpec. +func (in *OrganizationSettingsSpec) DeepCopy() *OrganizationSettingsSpec { + if in == nil { + return nil + } + out := new(OrganizationSettingsSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OrganizationSettingsStatus) DeepCopyInto(out *OrganizationSettingsStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSettingsStatus. +func (in *OrganizationSettingsStatus) DeepCopy() *OrganizationSettingsStatus { + if in == nil { + return nil + } + out := new(OrganizationSettingsStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PermissionInitParameters) DeepCopyInto(out *PermissionInitParameters) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PermissionInitParameters. +func (in *PermissionInitParameters) DeepCopy() *PermissionInitParameters { + if in == nil { + return nil + } + out := new(PermissionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PermissionObservation) DeepCopyInto(out *PermissionObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PermissionObservation. +func (in *PermissionObservation) DeepCopy() *PermissionObservation { + if in == nil { + return nil + } + out := new(PermissionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PermissionParameters) DeepCopyInto(out *PermissionParameters) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PermissionParameters. +func (in *PermissionParameters) DeepCopy() *PermissionParameters { + if in == nil { + return nil + } + out := new(PermissionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Powerpack) DeepCopyInto(out *Powerpack) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Powerpack. +func (in *Powerpack) DeepCopy() *Powerpack { + if in == nil { + return nil + } + out := new(Powerpack) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Powerpack) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PowerpackInitParameters) DeepCopyInto(out *PowerpackInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Layout != nil { + in, out := &in.Layout, &out.Layout + *out = make([]LayoutInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LiveSpan != nil { + in, out := &in.LiveSpan, &out.LiveSpan + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ShowTitle != nil { + in, out := &in.ShowTitle, &out.ShowTitle + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TemplateVariables != nil { + in, out := &in.TemplateVariables, &out.TemplateVariables + *out = make([]TemplateVariablesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PowerpackInitParameters. +func (in *PowerpackInitParameters) DeepCopy() *PowerpackInitParameters { + if in == nil { + return nil + } + out := new(PowerpackInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PowerpackList) DeepCopyInto(out *PowerpackList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Powerpack, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PowerpackList. +func (in *PowerpackList) DeepCopy() *PowerpackList { + if in == nil { + return nil + } + out := new(PowerpackList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PowerpackList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PowerpackObservation) DeepCopyInto(out *PowerpackObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Layout != nil { + in, out := &in.Layout, &out.Layout + *out = make([]LayoutObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LiveSpan != nil { + in, out := &in.LiveSpan, &out.LiveSpan + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ShowTitle != nil { + in, out := &in.ShowTitle, &out.ShowTitle + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TemplateVariables != nil { + in, out := &in.TemplateVariables, &out.TemplateVariables + *out = make([]TemplateVariablesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PowerpackObservation. +func (in *PowerpackObservation) DeepCopy() *PowerpackObservation { + if in == nil { + return nil + } + out := new(PowerpackObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PowerpackParameters) DeepCopyInto(out *PowerpackParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Layout != nil { + in, out := &in.Layout, &out.Layout + *out = make([]LayoutParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LiveSpan != nil { + in, out := &in.LiveSpan, &out.LiveSpan + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ShowTitle != nil { + in, out := &in.ShowTitle, &out.ShowTitle + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TemplateVariables != nil { + in, out := &in.TemplateVariables, &out.TemplateVariables + *out = make([]TemplateVariablesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Widget != nil { + in, out := &in.Widget, &out.Widget + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PowerpackParameters. +func (in *PowerpackParameters) DeepCopy() *PowerpackParameters { + if in == nil { + return nil + } + out := new(PowerpackParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PowerpackSpec) DeepCopyInto(out *PowerpackSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PowerpackSpec. +func (in *PowerpackSpec) DeepCopy() *PowerpackSpec { + if in == nil { + return nil + } + out := new(PowerpackSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PowerpackStatus) DeepCopyInto(out *PowerpackStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PowerpackStatus. +func (in *PowerpackStatus) DeepCopy() *PowerpackStatus { + if in == nil { + return nil + } + out := new(PowerpackStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryInitParameters) DeepCopyInto(out *QueryInitParameters) { + *out = *in + if in.Denominator != nil { + in, out := &in.Denominator, &out.Denominator + *out = new(string) + **out = **in + } + if in.Numerator != nil { + in, out := &in.Numerator, &out.Numerator + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryInitParameters. +func (in *QueryInitParameters) DeepCopy() *QueryInitParameters { + if in == nil { + return nil + } + out := new(QueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryObservation) DeepCopyInto(out *QueryObservation) { + *out = *in + if in.Denominator != nil { + in, out := &in.Denominator, &out.Denominator + *out = new(string) + **out = **in + } + if in.Numerator != nil { + in, out := &in.Numerator, &out.Numerator + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryObservation. +func (in *QueryObservation) DeepCopy() *QueryObservation { + if in == nil { + return nil + } + out := new(QueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryParameters) DeepCopyInto(out *QueryParameters) { + *out = *in + if in.Denominator != nil { + in, out := &in.Denominator, &out.Denominator + *out = new(string) + **out = **in + } + if in.Numerator != nil { + in, out := &in.Numerator, &out.Numerator + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryParameters. +func (in *QueryParameters) DeepCopy() *QueryParameters { + if in == nil { + return nil + } + out := new(QueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryQueryInitParameters) DeepCopyInto(out *QueryQueryInitParameters) { + *out = *in + if in.MetricQuery != nil { + in, out := &in.MetricQuery, &out.MetricQuery + *out = make([]MetricQueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryQueryInitParameters. +func (in *QueryQueryInitParameters) DeepCopy() *QueryQueryInitParameters { + if in == nil { + return nil + } + out := new(QueryQueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryQueryObservation) DeepCopyInto(out *QueryQueryObservation) { + *out = *in + if in.MetricQuery != nil { + in, out := &in.MetricQuery, &out.MetricQuery + *out = make([]MetricQueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryQueryObservation. +func (in *QueryQueryObservation) DeepCopy() *QueryQueryObservation { + if in == nil { + return nil + } + out := new(QueryQueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryQueryParameters) DeepCopyInto(out *QueryQueryParameters) { + *out = *in + if in.MetricQuery != nil { + in, out := &in.MetricQuery, &out.MetricQuery + *out = make([]MetricQueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryQueryParameters. +func (in *QueryQueryParameters) DeepCopy() *QueryQueryParameters { + if in == nil { + return nil + } + out := new(QueryQueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RUMApplication) DeepCopyInto(out *RUMApplication) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RUMApplication. +func (in *RUMApplication) DeepCopy() *RUMApplication { + if in == nil { + return nil + } + out := new(RUMApplication) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RUMApplication) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RUMApplicationInitParameters) DeepCopyInto(out *RUMApplicationInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RUMApplicationInitParameters. +func (in *RUMApplicationInitParameters) DeepCopy() *RUMApplicationInitParameters { + if in == nil { + return nil + } + out := new(RUMApplicationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RUMApplicationList) DeepCopyInto(out *RUMApplicationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RUMApplication, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RUMApplicationList. +func (in *RUMApplicationList) DeepCopy() *RUMApplicationList { + if in == nil { + return nil + } + out := new(RUMApplicationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RUMApplicationList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RUMApplicationObservation) DeepCopyInto(out *RUMApplicationObservation) { + *out = *in + if in.ClientToken != nil { + in, out := &in.ClientToken, &out.ClientToken + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RUMApplicationObservation. +func (in *RUMApplicationObservation) DeepCopy() *RUMApplicationObservation { + if in == nil { + return nil + } + out := new(RUMApplicationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RUMApplicationParameters) DeepCopyInto(out *RUMApplicationParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RUMApplicationParameters. +func (in *RUMApplicationParameters) DeepCopy() *RUMApplicationParameters { + if in == nil { + return nil + } + out := new(RUMApplicationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RUMApplicationSpec) DeepCopyInto(out *RUMApplicationSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RUMApplicationSpec. +func (in *RUMApplicationSpec) DeepCopy() *RUMApplicationSpec { + if in == nil { + return nil + } + out := new(RUMApplicationSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RUMApplicationStatus) DeepCopyInto(out *RUMApplicationStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RUMApplicationStatus. +func (in *RUMApplicationStatus) DeepCopy() *RUMApplicationStatus { + if in == nil { + return nil + } + out := new(RUMApplicationStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurrenceInitParameters) DeepCopyInto(out *RecurrenceInitParameters) { + *out = *in + if in.Period != nil { + in, out := &in.Period, &out.Period + *out = new(float64) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.UntilDate != nil { + in, out := &in.UntilDate, &out.UntilDate + *out = new(float64) + **out = **in + } + if in.UntilOccurrences != nil { + in, out := &in.UntilOccurrences, &out.UntilOccurrences + *out = new(float64) + **out = **in + } + if in.WeekDays != nil { + in, out := &in.WeekDays, &out.WeekDays + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurrenceInitParameters. +func (in *RecurrenceInitParameters) DeepCopy() *RecurrenceInitParameters { + if in == nil { + return nil + } + out := new(RecurrenceInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurrenceObservation) DeepCopyInto(out *RecurrenceObservation) { + *out = *in + if in.Period != nil { + in, out := &in.Period, &out.Period + *out = new(float64) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.UntilDate != nil { + in, out := &in.UntilDate, &out.UntilDate + *out = new(float64) + **out = **in + } + if in.UntilOccurrences != nil { + in, out := &in.UntilOccurrences, &out.UntilOccurrences + *out = new(float64) + **out = **in + } + if in.WeekDays != nil { + in, out := &in.WeekDays, &out.WeekDays + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurrenceObservation. +func (in *RecurrenceObservation) DeepCopy() *RecurrenceObservation { + if in == nil { + return nil + } + out := new(RecurrenceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurrenceParameters) DeepCopyInto(out *RecurrenceParameters) { + *out = *in + if in.Period != nil { + in, out := &in.Period, &out.Period + *out = new(float64) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.UntilDate != nil { + in, out := &in.UntilDate, &out.UntilDate + *out = new(float64) + **out = **in + } + if in.UntilOccurrences != nil { + in, out := &in.UntilOccurrences, &out.UntilOccurrences + *out = new(float64) + **out = **in + } + if in.WeekDays != nil { + in, out := &in.WeekDays, &out.WeekDays + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurrenceParameters. +func (in *RecurrenceParameters) DeepCopy() *RecurrenceParameters { + if in == nil { + return nil + } + out := new(RecurrenceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringScheduleInitParameters) DeepCopyInto(out *RecurringScheduleInitParameters) { + *out = *in + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]RecurringScheduleRecurrenceInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringScheduleInitParameters. +func (in *RecurringScheduleInitParameters) DeepCopy() *RecurringScheduleInitParameters { + if in == nil { + return nil + } + out := new(RecurringScheduleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringScheduleObservation) DeepCopyInto(out *RecurringScheduleObservation) { + *out = *in + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]RecurringScheduleRecurrenceObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringScheduleObservation. +func (in *RecurringScheduleObservation) DeepCopy() *RecurringScheduleObservation { + if in == nil { + return nil + } + out := new(RecurringScheduleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringScheduleParameters) DeepCopyInto(out *RecurringScheduleParameters) { + *out = *in + if in.Recurrence != nil { + in, out := &in.Recurrence, &out.Recurrence + *out = make([]RecurringScheduleRecurrenceParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringScheduleParameters. +func (in *RecurringScheduleParameters) DeepCopy() *RecurringScheduleParameters { + if in == nil { + return nil + } + out := new(RecurringScheduleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringScheduleRecurrenceInitParameters) DeepCopyInto(out *RecurringScheduleRecurrenceInitParameters) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(string) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringScheduleRecurrenceInitParameters. +func (in *RecurringScheduleRecurrenceInitParameters) DeepCopy() *RecurringScheduleRecurrenceInitParameters { + if in == nil { + return nil + } + out := new(RecurringScheduleRecurrenceInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringScheduleRecurrenceObservation) DeepCopyInto(out *RecurringScheduleRecurrenceObservation) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(string) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringScheduleRecurrenceObservation. +func (in *RecurringScheduleRecurrenceObservation) DeepCopy() *RecurringScheduleRecurrenceObservation { + if in == nil { + return nil + } + out := new(RecurringScheduleRecurrenceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RecurringScheduleRecurrenceParameters) DeepCopyInto(out *RecurringScheduleRecurrenceParameters) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(string) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurringScheduleRecurrenceParameters. +func (in *RecurringScheduleRecurrenceParameters) DeepCopy() *RecurringScheduleRecurrenceParameters { + if in == nil { + return nil + } + out := new(RecurringScheduleRecurrenceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestrictionPolicy) DeepCopyInto(out *RestrictionPolicy) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestrictionPolicy. +func (in *RestrictionPolicy) DeepCopy() *RestrictionPolicy { + if in == nil { + return nil + } + out := new(RestrictionPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RestrictionPolicy) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestrictionPolicyInitParameters) DeepCopyInto(out *RestrictionPolicyInitParameters) { + *out = *in + if in.Bindings != nil { + in, out := &in.Bindings, &out.Bindings + *out = make([]BindingsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ResourceID != nil { + in, out := &in.ResourceID, &out.ResourceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestrictionPolicyInitParameters. +func (in *RestrictionPolicyInitParameters) DeepCopy() *RestrictionPolicyInitParameters { + if in == nil { + return nil + } + out := new(RestrictionPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestrictionPolicyList) DeepCopyInto(out *RestrictionPolicyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RestrictionPolicy, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestrictionPolicyList. +func (in *RestrictionPolicyList) DeepCopy() *RestrictionPolicyList { + if in == nil { + return nil + } + out := new(RestrictionPolicyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RestrictionPolicyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestrictionPolicyObservation) DeepCopyInto(out *RestrictionPolicyObservation) { + *out = *in + if in.Bindings != nil { + in, out := &in.Bindings, &out.Bindings + *out = make([]BindingsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ResourceID != nil { + in, out := &in.ResourceID, &out.ResourceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestrictionPolicyObservation. +func (in *RestrictionPolicyObservation) DeepCopy() *RestrictionPolicyObservation { + if in == nil { + return nil + } + out := new(RestrictionPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestrictionPolicyParameters) DeepCopyInto(out *RestrictionPolicyParameters) { + *out = *in + if in.Bindings != nil { + in, out := &in.Bindings, &out.Bindings + *out = make([]BindingsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ResourceID != nil { + in, out := &in.ResourceID, &out.ResourceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestrictionPolicyParameters. +func (in *RestrictionPolicyParameters) DeepCopy() *RestrictionPolicyParameters { + if in == nil { + return nil + } + out := new(RestrictionPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestrictionPolicySpec) DeepCopyInto(out *RestrictionPolicySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestrictionPolicySpec. +func (in *RestrictionPolicySpec) DeepCopy() *RestrictionPolicySpec { + if in == nil { + return nil + } + out := new(RestrictionPolicySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestrictionPolicyStatus) DeepCopyInto(out *RestrictionPolicyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestrictionPolicyStatus. +func (in *RestrictionPolicyStatus) DeepCopy() *RestrictionPolicyStatus { + if in == nil { + return nil + } + out := new(RestrictionPolicyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Role) DeepCopyInto(out *Role) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Role. +func (in *Role) DeepCopy() *Role { + if in == nil { + return nil + } + out := new(Role) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Role) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleInitParameters) DeepCopyInto(out *RoleInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Permission != nil { + in, out := &in.Permission, &out.Permission + *out = make([]PermissionInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleInitParameters. +func (in *RoleInitParameters) DeepCopy() *RoleInitParameters { + if in == nil { + return nil + } + out := new(RoleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleList) DeepCopyInto(out *RoleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Role, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleList. +func (in *RoleList) DeepCopy() *RoleList { + if in == nil { + return nil + } + out := new(RoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleObservation) DeepCopyInto(out *RoleObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Permission != nil { + in, out := &in.Permission, &out.Permission + *out = make([]PermissionObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserCount != nil { + in, out := &in.UserCount, &out.UserCount + *out = new(float64) + **out = **in + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleObservation. +func (in *RoleObservation) DeepCopy() *RoleObservation { + if in == nil { + return nil + } + out := new(RoleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleParameters) DeepCopyInto(out *RoleParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Permission != nil { + in, out := &in.Permission, &out.Permission + *out = make([]PermissionParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleParameters. +func (in *RoleParameters) DeepCopy() *RoleParameters { + if in == nil { + return nil + } + out := new(RoleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleSpec) DeepCopyInto(out *RoleSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSpec. +func (in *RoleSpec) DeepCopy() *RoleSpec { + if in == nil { + return nil + } + out := new(RoleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleStatus) DeepCopyInto(out *RoleStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleStatus. +func (in *RoleStatus) DeepCopy() *RoleStatus { + if in == nil { + return nil + } + out := new(RoleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLAutocreateUsersDomainsInitParameters) DeepCopyInto(out *SAMLAutocreateUsersDomainsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLAutocreateUsersDomainsInitParameters. +func (in *SAMLAutocreateUsersDomainsInitParameters) DeepCopy() *SAMLAutocreateUsersDomainsInitParameters { + if in == nil { + return nil + } + out := new(SAMLAutocreateUsersDomainsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLAutocreateUsersDomainsObservation) DeepCopyInto(out *SAMLAutocreateUsersDomainsObservation) { + *out = *in + if in.Domains != nil { + in, out := &in.Domains, &out.Domains + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLAutocreateUsersDomainsObservation. +func (in *SAMLAutocreateUsersDomainsObservation) DeepCopy() *SAMLAutocreateUsersDomainsObservation { + if in == nil { + return nil + } + out := new(SAMLAutocreateUsersDomainsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLAutocreateUsersDomainsParameters) DeepCopyInto(out *SAMLAutocreateUsersDomainsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLAutocreateUsersDomainsParameters. +func (in *SAMLAutocreateUsersDomainsParameters) DeepCopy() *SAMLAutocreateUsersDomainsParameters { + if in == nil { + return nil + } + out := new(SAMLAutocreateUsersDomainsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLIdpInitiatedLoginInitParameters) DeepCopyInto(out *SAMLIdpInitiatedLoginInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLIdpInitiatedLoginInitParameters. +func (in *SAMLIdpInitiatedLoginInitParameters) DeepCopy() *SAMLIdpInitiatedLoginInitParameters { + if in == nil { + return nil + } + out := new(SAMLIdpInitiatedLoginInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLIdpInitiatedLoginObservation) DeepCopyInto(out *SAMLIdpInitiatedLoginObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLIdpInitiatedLoginObservation. +func (in *SAMLIdpInitiatedLoginObservation) DeepCopy() *SAMLIdpInitiatedLoginObservation { + if in == nil { + return nil + } + out := new(SAMLIdpInitiatedLoginObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLIdpInitiatedLoginParameters) DeepCopyInto(out *SAMLIdpInitiatedLoginParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLIdpInitiatedLoginParameters. +func (in *SAMLIdpInitiatedLoginParameters) DeepCopy() *SAMLIdpInitiatedLoginParameters { + if in == nil { + return nil + } + out := new(SAMLIdpInitiatedLoginParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLInitParameters) DeepCopyInto(out *SAMLInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLInitParameters. +func (in *SAMLInitParameters) DeepCopy() *SAMLInitParameters { + if in == nil { + return nil + } + out := new(SAMLInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLObservation) DeepCopyInto(out *SAMLObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLObservation. +func (in *SAMLObservation) DeepCopy() *SAMLObservation { + if in == nil { + return nil + } + out := new(SAMLObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLParameters) DeepCopyInto(out *SAMLParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLParameters. +func (in *SAMLParameters) DeepCopy() *SAMLParameters { + if in == nil { + return nil + } + out := new(SAMLParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLStrictModeInitParameters) DeepCopyInto(out *SAMLStrictModeInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLStrictModeInitParameters. +func (in *SAMLStrictModeInitParameters) DeepCopy() *SAMLStrictModeInitParameters { + if in == nil { + return nil + } + out := new(SAMLStrictModeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLStrictModeObservation) DeepCopyInto(out *SAMLStrictModeObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLStrictModeObservation. +func (in *SAMLStrictModeObservation) DeepCopy() *SAMLStrictModeObservation { + if in == nil { + return nil + } + out := new(SAMLStrictModeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SAMLStrictModeParameters) DeepCopyInto(out *SAMLStrictModeParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SAMLStrictModeParameters. +func (in *SAMLStrictModeParameters) DeepCopy() *SAMLStrictModeParameters { + if in == nil { + return nil + } + out := new(SAMLStrictModeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SLOCorrection) DeepCopyInto(out *SLOCorrection) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLOCorrection. +func (in *SLOCorrection) DeepCopy() *SLOCorrection { + if in == nil { + return nil + } + out := new(SLOCorrection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SLOCorrection) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SLOCorrectionInitParameters) DeepCopyInto(out *SLOCorrectionInitParameters) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(float64) + **out = **in + } + if in.End != nil { + in, out := &in.End, &out.End + *out = new(float64) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.SLOID != nil { + in, out := &in.SLOID, &out.SLOID + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(float64) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLOCorrectionInitParameters. +func (in *SLOCorrectionInitParameters) DeepCopy() *SLOCorrectionInitParameters { + if in == nil { + return nil + } + out := new(SLOCorrectionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SLOCorrectionList) DeepCopyInto(out *SLOCorrectionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]SLOCorrection, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLOCorrectionList. +func (in *SLOCorrectionList) DeepCopy() *SLOCorrectionList { + if in == nil { + return nil + } + out := new(SLOCorrectionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SLOCorrectionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SLOCorrectionObservation) DeepCopyInto(out *SLOCorrectionObservation) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(float64) + **out = **in + } + if in.End != nil { + in, out := &in.End, &out.End + *out = new(float64) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.SLOID != nil { + in, out := &in.SLOID, &out.SLOID + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(float64) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLOCorrectionObservation. +func (in *SLOCorrectionObservation) DeepCopy() *SLOCorrectionObservation { + if in == nil { + return nil + } + out := new(SLOCorrectionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SLOCorrectionParameters) DeepCopyInto(out *SLOCorrectionParameters) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(float64) + **out = **in + } + if in.End != nil { + in, out := &in.End, &out.End + *out = new(float64) + **out = **in + } + if in.Rrule != nil { + in, out := &in.Rrule, &out.Rrule + *out = new(string) + **out = **in + } + if in.SLOID != nil { + in, out := &in.SLOID, &out.SLOID + *out = new(string) + **out = **in + } + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(float64) + **out = **in + } + if in.Timezone != nil { + in, out := &in.Timezone, &out.Timezone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLOCorrectionParameters. +func (in *SLOCorrectionParameters) DeepCopy() *SLOCorrectionParameters { + if in == nil { + return nil + } + out := new(SLOCorrectionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SLOCorrectionSpec) DeepCopyInto(out *SLOCorrectionSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLOCorrectionSpec. +func (in *SLOCorrectionSpec) DeepCopy() *SLOCorrectionSpec { + if in == nil { + return nil + } + out := new(SLOCorrectionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SLOCorrectionStatus) DeepCopyInto(out *SLOCorrectionStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLOCorrectionStatus. +func (in *SLOCorrectionStatus) DeepCopy() *SLOCorrectionStatus { + if in == nil { + return nil + } + out := new(SLOCorrectionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingOptionsInitParameters) DeepCopyInto(out *SchedulingOptionsInitParameters) { + *out = *in + if in.CustomSchedule != nil { + in, out := &in.CustomSchedule, &out.CustomSchedule + *out = make([]CustomScheduleInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = make([]EvaluationWindowInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingOptionsInitParameters. +func (in *SchedulingOptionsInitParameters) DeepCopy() *SchedulingOptionsInitParameters { + if in == nil { + return nil + } + out := new(SchedulingOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingOptionsObservation) DeepCopyInto(out *SchedulingOptionsObservation) { + *out = *in + if in.CustomSchedule != nil { + in, out := &in.CustomSchedule, &out.CustomSchedule + *out = make([]CustomScheduleObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = make([]EvaluationWindowObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingOptionsObservation. +func (in *SchedulingOptionsObservation) DeepCopy() *SchedulingOptionsObservation { + if in == nil { + return nil + } + out := new(SchedulingOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingOptionsParameters) DeepCopyInto(out *SchedulingOptionsParameters) { + *out = *in + if in.CustomSchedule != nil { + in, out := &in.CustomSchedule, &out.CustomSchedule + *out = make([]CustomScheduleParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = make([]EvaluationWindowParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingOptionsParameters. +func (in *SchedulingOptionsParameters) DeepCopy() *SchedulingOptionsParameters { + if in == nil { + return nil + } + out := new(SchedulingOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SearchInitParameters) DeepCopyInto(out *SearchInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchInitParameters. +func (in *SearchInitParameters) DeepCopy() *SearchInitParameters { + if in == nil { + return nil + } + out := new(SearchInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SearchObservation) DeepCopyInto(out *SearchObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchObservation. +func (in *SearchObservation) DeepCopy() *SearchObservation { + if in == nil { + return nil + } + out := new(SearchObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SearchParameters) DeepCopyInto(out *SearchParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchParameters. +func (in *SearchParameters) DeepCopy() *SearchParameters { + if in == nil { + return nil + } + out := new(SearchParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccount) DeepCopyInto(out *ServiceAccount) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccount. +func (in *ServiceAccount) DeepCopy() *ServiceAccount { + if in == nil { + return nil + } + out := new(ServiceAccount) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceAccount) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountApplicationKey) DeepCopyInto(out *ServiceAccountApplicationKey) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountApplicationKey. +func (in *ServiceAccountApplicationKey) DeepCopy() *ServiceAccountApplicationKey { + if in == nil { + return nil + } + out := new(ServiceAccountApplicationKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceAccountApplicationKey) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountApplicationKeyInitParameters) DeepCopyInto(out *ServiceAccountApplicationKeyInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ServiceAccountID != nil { + in, out := &in.ServiceAccountID, &out.ServiceAccountID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountApplicationKeyInitParameters. +func (in *ServiceAccountApplicationKeyInitParameters) DeepCopy() *ServiceAccountApplicationKeyInitParameters { + if in == nil { + return nil + } + out := new(ServiceAccountApplicationKeyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountApplicationKeyList) DeepCopyInto(out *ServiceAccountApplicationKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceAccountApplicationKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountApplicationKeyList. +func (in *ServiceAccountApplicationKeyList) DeepCopy() *ServiceAccountApplicationKeyList { + if in == nil { + return nil + } + out := new(ServiceAccountApplicationKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceAccountApplicationKeyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountApplicationKeyObservation) DeepCopyInto(out *ServiceAccountApplicationKeyObservation) { + *out = *in + if in.CreatedAt != nil { + in, out := &in.CreatedAt, &out.CreatedAt + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Last4 != nil { + in, out := &in.Last4, &out.Last4 + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ServiceAccountID != nil { + in, out := &in.ServiceAccountID, &out.ServiceAccountID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountApplicationKeyObservation. +func (in *ServiceAccountApplicationKeyObservation) DeepCopy() *ServiceAccountApplicationKeyObservation { + if in == nil { + return nil + } + out := new(ServiceAccountApplicationKeyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountApplicationKeyParameters) DeepCopyInto(out *ServiceAccountApplicationKeyParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ServiceAccountID != nil { + in, out := &in.ServiceAccountID, &out.ServiceAccountID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountApplicationKeyParameters. +func (in *ServiceAccountApplicationKeyParameters) DeepCopy() *ServiceAccountApplicationKeyParameters { + if in == nil { + return nil + } + out := new(ServiceAccountApplicationKeyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountApplicationKeySpec) DeepCopyInto(out *ServiceAccountApplicationKeySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountApplicationKeySpec. +func (in *ServiceAccountApplicationKeySpec) DeepCopy() *ServiceAccountApplicationKeySpec { + if in == nil { + return nil + } + out := new(ServiceAccountApplicationKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountApplicationKeyStatus) DeepCopyInto(out *ServiceAccountApplicationKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountApplicationKeyStatus. +func (in *ServiceAccountApplicationKeyStatus) DeepCopy() *ServiceAccountApplicationKeyStatus { + if in == nil { + return nil + } + out := new(ServiceAccountApplicationKeyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountInitParameters) DeepCopyInto(out *ServiceAccountInitParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Roles != nil { + in, out := &in.Roles, &out.Roles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountInitParameters. +func (in *ServiceAccountInitParameters) DeepCopy() *ServiceAccountInitParameters { + if in == nil { + return nil + } + out := new(ServiceAccountInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountList) DeepCopyInto(out *ServiceAccountList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceAccount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountList. +func (in *ServiceAccountList) DeepCopy() *ServiceAccountList { + if in == nil { + return nil + } + out := new(ServiceAccountList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceAccountList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountObservation) DeepCopyInto(out *ServiceAccountObservation) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Roles != nil { + in, out := &in.Roles, &out.Roles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountObservation. +func (in *ServiceAccountObservation) DeepCopy() *ServiceAccountObservation { + if in == nil { + return nil + } + out := new(ServiceAccountObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountParameters) DeepCopyInto(out *ServiceAccountParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Roles != nil { + in, out := &in.Roles, &out.Roles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountParameters. +func (in *ServiceAccountParameters) DeepCopy() *ServiceAccountParameters { + if in == nil { + return nil + } + out := new(ServiceAccountParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountSpec) DeepCopyInto(out *ServiceAccountSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountSpec. +func (in *ServiceAccountSpec) DeepCopy() *ServiceAccountSpec { + if in == nil { + return nil + } + out := new(ServiceAccountSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountStatus) DeepCopyInto(out *ServiceAccountStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountStatus. +func (in *ServiceAccountStatus) DeepCopy() *ServiceAccountStatus { + if in == nil { + return nil + } + out := new(ServiceAccountStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceDefinitionYAML) DeepCopyInto(out *ServiceDefinitionYAML) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefinitionYAML. +func (in *ServiceDefinitionYAML) DeepCopy() *ServiceDefinitionYAML { + if in == nil { + return nil + } + out := new(ServiceDefinitionYAML) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceDefinitionYAML) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceDefinitionYAMLInitParameters) DeepCopyInto(out *ServiceDefinitionYAMLInitParameters) { + *out = *in + if in.ServiceDefinition != nil { + in, out := &in.ServiceDefinition, &out.ServiceDefinition + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefinitionYAMLInitParameters. +func (in *ServiceDefinitionYAMLInitParameters) DeepCopy() *ServiceDefinitionYAMLInitParameters { + if in == nil { + return nil + } + out := new(ServiceDefinitionYAMLInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceDefinitionYAMLList) DeepCopyInto(out *ServiceDefinitionYAMLList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceDefinitionYAML, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefinitionYAMLList. +func (in *ServiceDefinitionYAMLList) DeepCopy() *ServiceDefinitionYAMLList { + if in == nil { + return nil + } + out := new(ServiceDefinitionYAMLList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceDefinitionYAMLList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceDefinitionYAMLObservation) DeepCopyInto(out *ServiceDefinitionYAMLObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ServiceDefinition != nil { + in, out := &in.ServiceDefinition, &out.ServiceDefinition + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefinitionYAMLObservation. +func (in *ServiceDefinitionYAMLObservation) DeepCopy() *ServiceDefinitionYAMLObservation { + if in == nil { + return nil + } + out := new(ServiceDefinitionYAMLObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceDefinitionYAMLParameters) DeepCopyInto(out *ServiceDefinitionYAMLParameters) { + *out = *in + if in.ServiceDefinition != nil { + in, out := &in.ServiceDefinition, &out.ServiceDefinition + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefinitionYAMLParameters. +func (in *ServiceDefinitionYAMLParameters) DeepCopy() *ServiceDefinitionYAMLParameters { + if in == nil { + return nil + } + out := new(ServiceDefinitionYAMLParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceDefinitionYAMLSpec) DeepCopyInto(out *ServiceDefinitionYAMLSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefinitionYAMLSpec. +func (in *ServiceDefinitionYAMLSpec) DeepCopy() *ServiceDefinitionYAMLSpec { + if in == nil { + return nil + } + out := new(ServiceDefinitionYAMLSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceDefinitionYAMLStatus) DeepCopyInto(out *ServiceDefinitionYAMLStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefinitionYAMLStatus. +func (in *ServiceDefinitionYAMLStatus) DeepCopy() *ServiceDefinitionYAMLStatus { + if in == nil { + return nil + } + out := new(ServiceDefinitionYAMLStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceLevelObjective) DeepCopyInto(out *ServiceLevelObjective) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceLevelObjective. +func (in *ServiceLevelObjective) DeepCopy() *ServiceLevelObjective { + if in == nil { + return nil + } + out := new(ServiceLevelObjective) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceLevelObjective) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceLevelObjectiveInitParameters) DeepCopyInto(out *ServiceLevelObjectiveInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ForceDelete != nil { + in, out := &in.ForceDelete, &out.ForceDelete + *out = new(bool) + **out = **in + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MonitorIds != nil { + in, out := &in.MonitorIds, &out.MonitorIds + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SliSpecification != nil { + in, out := &in.SliSpecification, &out.SliSpecification + *out = make([]SliSpecificationInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TargetThreshold != nil { + in, out := &in.TargetThreshold, &out.TargetThreshold + *out = new(float64) + **out = **in + } + if in.Thresholds != nil { + in, out := &in.Thresholds, &out.Thresholds + *out = make([]ThresholdsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Timeframe != nil { + in, out := &in.Timeframe, &out.Timeframe + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } + if in.WarningThreshold != nil { + in, out := &in.WarningThreshold, &out.WarningThreshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceLevelObjectiveInitParameters. +func (in *ServiceLevelObjectiveInitParameters) DeepCopy() *ServiceLevelObjectiveInitParameters { + if in == nil { + return nil + } + out := new(ServiceLevelObjectiveInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceLevelObjectiveList) DeepCopyInto(out *ServiceLevelObjectiveList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceLevelObjective, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceLevelObjectiveList. +func (in *ServiceLevelObjectiveList) DeepCopy() *ServiceLevelObjectiveList { + if in == nil { + return nil + } + out := new(ServiceLevelObjectiveList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceLevelObjectiveList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceLevelObjectiveObservation) DeepCopyInto(out *ServiceLevelObjectiveObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ForceDelete != nil { + in, out := &in.ForceDelete, &out.ForceDelete + *out = new(bool) + **out = **in + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.MonitorIds != nil { + in, out := &in.MonitorIds, &out.MonitorIds + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SliSpecification != nil { + in, out := &in.SliSpecification, &out.SliSpecification + *out = make([]SliSpecificationObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TargetThreshold != nil { + in, out := &in.TargetThreshold, &out.TargetThreshold + *out = new(float64) + **out = **in + } + if in.Thresholds != nil { + in, out := &in.Thresholds, &out.Thresholds + *out = make([]ThresholdsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Timeframe != nil { + in, out := &in.Timeframe, &out.Timeframe + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } + if in.WarningThreshold != nil { + in, out := &in.WarningThreshold, &out.WarningThreshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceLevelObjectiveObservation. +func (in *ServiceLevelObjectiveObservation) DeepCopy() *ServiceLevelObjectiveObservation { + if in == nil { + return nil + } + out := new(ServiceLevelObjectiveObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceLevelObjectiveParameters) DeepCopyInto(out *ServiceLevelObjectiveParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ForceDelete != nil { + in, out := &in.ForceDelete, &out.ForceDelete + *out = new(bool) + **out = **in + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MonitorIds != nil { + in, out := &in.MonitorIds, &out.MonitorIds + *out = make([]*float64, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(float64) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SliSpecification != nil { + in, out := &in.SliSpecification, &out.SliSpecification + *out = make([]SliSpecificationParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TargetThreshold != nil { + in, out := &in.TargetThreshold, &out.TargetThreshold + *out = new(float64) + **out = **in + } + if in.Thresholds != nil { + in, out := &in.Thresholds, &out.Thresholds + *out = make([]ThresholdsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Timeframe != nil { + in, out := &in.Timeframe, &out.Timeframe + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Validate != nil { + in, out := &in.Validate, &out.Validate + *out = new(bool) + **out = **in + } + if in.WarningThreshold != nil { + in, out := &in.WarningThreshold, &out.WarningThreshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceLevelObjectiveParameters. +func (in *ServiceLevelObjectiveParameters) DeepCopy() *ServiceLevelObjectiveParameters { + if in == nil { + return nil + } + out := new(ServiceLevelObjectiveParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceLevelObjectiveSpec) DeepCopyInto(out *ServiceLevelObjectiveSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceLevelObjectiveSpec. +func (in *ServiceLevelObjectiveSpec) DeepCopy() *ServiceLevelObjectiveSpec { + if in == nil { + return nil + } + out := new(ServiceLevelObjectiveSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceLevelObjectiveStatus) DeepCopyInto(out *ServiceLevelObjectiveStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceLevelObjectiveStatus. +func (in *ServiceLevelObjectiveStatus) DeepCopy() *ServiceLevelObjectiveStatus { + if in == nil { + return nil + } + out := new(ServiceLevelObjectiveStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsInitParameters) DeepCopyInto(out *SettingsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsInitParameters. +func (in *SettingsInitParameters) DeepCopy() *SettingsInitParameters { + if in == nil { + return nil + } + out := new(SettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsObservation) DeepCopyInto(out *SettingsObservation) { + *out = *in + if in.PrivateWidgetShare != nil { + in, out := &in.PrivateWidgetShare, &out.PrivateWidgetShare + *out = new(bool) + **out = **in + } + if in.SAML != nil { + in, out := &in.SAML, &out.SAML + *out = make([]SAMLObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLAutocreateAccessRole != nil { + in, out := &in.SAMLAutocreateAccessRole, &out.SAMLAutocreateAccessRole + *out = new(string) + **out = **in + } + if in.SAMLAutocreateUsersDomains != nil { + in, out := &in.SAMLAutocreateUsersDomains, &out.SAMLAutocreateUsersDomains + *out = make([]SAMLAutocreateUsersDomainsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLCanBeEnabled != nil { + in, out := &in.SAMLCanBeEnabled, &out.SAMLCanBeEnabled + *out = new(bool) + **out = **in + } + if in.SAMLIdpEndpoint != nil { + in, out := &in.SAMLIdpEndpoint, &out.SAMLIdpEndpoint + *out = new(string) + **out = **in + } + if in.SAMLIdpInitiatedLogin != nil { + in, out := &in.SAMLIdpInitiatedLogin, &out.SAMLIdpInitiatedLogin + *out = make([]SAMLIdpInitiatedLoginObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SAMLIdpMetadataUploaded != nil { + in, out := &in.SAMLIdpMetadataUploaded, &out.SAMLIdpMetadataUploaded + *out = new(bool) + **out = **in + } + if in.SAMLLoginURL != nil { + in, out := &in.SAMLLoginURL, &out.SAMLLoginURL + *out = new(string) + **out = **in + } + if in.SAMLStrictMode != nil { + in, out := &in.SAMLStrictMode, &out.SAMLStrictMode + *out = make([]SAMLStrictModeObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsObservation. +func (in *SettingsObservation) DeepCopy() *SettingsObservation { + if in == nil { + return nil + } + out := new(SettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsParameters) DeepCopyInto(out *SettingsParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsParameters. +func (in *SettingsParameters) DeepCopy() *SettingsParameters { + if in == nil { + return nil + } + out := new(SettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLAutocreateUsersDomainsInitParameters) DeepCopyInto(out *SettingsSAMLAutocreateUsersDomainsInitParameters) { + *out = *in + if in.Domains != nil { + in, out := &in.Domains, &out.Domains + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLAutocreateUsersDomainsInitParameters. +func (in *SettingsSAMLAutocreateUsersDomainsInitParameters) DeepCopy() *SettingsSAMLAutocreateUsersDomainsInitParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLAutocreateUsersDomainsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLAutocreateUsersDomainsObservation) DeepCopyInto(out *SettingsSAMLAutocreateUsersDomainsObservation) { + *out = *in + if in.Domains != nil { + in, out := &in.Domains, &out.Domains + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLAutocreateUsersDomainsObservation. +func (in *SettingsSAMLAutocreateUsersDomainsObservation) DeepCopy() *SettingsSAMLAutocreateUsersDomainsObservation { + if in == nil { + return nil + } + out := new(SettingsSAMLAutocreateUsersDomainsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLAutocreateUsersDomainsParameters) DeepCopyInto(out *SettingsSAMLAutocreateUsersDomainsParameters) { + *out = *in + if in.Domains != nil { + in, out := &in.Domains, &out.Domains + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLAutocreateUsersDomainsParameters. +func (in *SettingsSAMLAutocreateUsersDomainsParameters) DeepCopy() *SettingsSAMLAutocreateUsersDomainsParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLAutocreateUsersDomainsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLIdpInitiatedLoginInitParameters) DeepCopyInto(out *SettingsSAMLIdpInitiatedLoginInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLIdpInitiatedLoginInitParameters. +func (in *SettingsSAMLIdpInitiatedLoginInitParameters) DeepCopy() *SettingsSAMLIdpInitiatedLoginInitParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLIdpInitiatedLoginInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLIdpInitiatedLoginObservation) DeepCopyInto(out *SettingsSAMLIdpInitiatedLoginObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLIdpInitiatedLoginObservation. +func (in *SettingsSAMLIdpInitiatedLoginObservation) DeepCopy() *SettingsSAMLIdpInitiatedLoginObservation { + if in == nil { + return nil + } + out := new(SettingsSAMLIdpInitiatedLoginObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLIdpInitiatedLoginParameters) DeepCopyInto(out *SettingsSAMLIdpInitiatedLoginParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLIdpInitiatedLoginParameters. +func (in *SettingsSAMLIdpInitiatedLoginParameters) DeepCopy() *SettingsSAMLIdpInitiatedLoginParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLIdpInitiatedLoginParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLInitParameters) DeepCopyInto(out *SettingsSAMLInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLInitParameters. +func (in *SettingsSAMLInitParameters) DeepCopy() *SettingsSAMLInitParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLObservation) DeepCopyInto(out *SettingsSAMLObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLObservation. +func (in *SettingsSAMLObservation) DeepCopy() *SettingsSAMLObservation { + if in == nil { + return nil + } + out := new(SettingsSAMLObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLParameters) DeepCopyInto(out *SettingsSAMLParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLParameters. +func (in *SettingsSAMLParameters) DeepCopy() *SettingsSAMLParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLStrictModeInitParameters) DeepCopyInto(out *SettingsSAMLStrictModeInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLStrictModeInitParameters. +func (in *SettingsSAMLStrictModeInitParameters) DeepCopy() *SettingsSAMLStrictModeInitParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLStrictModeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLStrictModeObservation) DeepCopyInto(out *SettingsSAMLStrictModeObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLStrictModeObservation. +func (in *SettingsSAMLStrictModeObservation) DeepCopy() *SettingsSAMLStrictModeObservation { + if in == nil { + return nil + } + out := new(SettingsSAMLStrictModeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSAMLStrictModeParameters) DeepCopyInto(out *SettingsSAMLStrictModeParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSAMLStrictModeParameters. +func (in *SettingsSAMLStrictModeParameters) DeepCopy() *SettingsSAMLStrictModeParameters { + if in == nil { + return nil + } + out := new(SettingsSAMLStrictModeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SliSpecificationInitParameters) DeepCopyInto(out *SliSpecificationInitParameters) { + *out = *in + if in.TimeSlice != nil { + in, out := &in.TimeSlice, &out.TimeSlice + *out = make([]TimeSliceInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SliSpecificationInitParameters. +func (in *SliSpecificationInitParameters) DeepCopy() *SliSpecificationInitParameters { + if in == nil { + return nil + } + out := new(SliSpecificationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SliSpecificationObservation) DeepCopyInto(out *SliSpecificationObservation) { + *out = *in + if in.TimeSlice != nil { + in, out := &in.TimeSlice, &out.TimeSlice + *out = make([]TimeSliceObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SliSpecificationObservation. +func (in *SliSpecificationObservation) DeepCopy() *SliSpecificationObservation { + if in == nil { + return nil + } + out := new(SliSpecificationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SliSpecificationParameters) DeepCopyInto(out *SliSpecificationParameters) { + *out = *in + if in.TimeSlice != nil { + in, out := &in.TimeSlice, &out.TimeSlice + *out = make([]TimeSliceParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SliSpecificationParameters. +func (in *SliSpecificationParameters) DeepCopy() *SliSpecificationParameters { + if in == nil { + return nil + } + out := new(SliSpecificationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SortInitParameters) DeepCopyInto(out *SortInitParameters) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.Order != nil { + in, out := &in.Order, &out.Order + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SortInitParameters. +func (in *SortInitParameters) DeepCopy() *SortInitParameters { + if in == nil { + return nil + } + out := new(SortInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SortObservation) DeepCopyInto(out *SortObservation) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.Order != nil { + in, out := &in.Order, &out.Order + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SortObservation. +func (in *SortObservation) DeepCopy() *SortObservation { + if in == nil { + return nil + } + out := new(SortObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SortParameters) DeepCopyInto(out *SortParameters) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.Order != nil { + in, out := &in.Order, &out.Order + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SortParameters. +func (in *SortParameters) DeepCopy() *SortParameters { + if in == nil { + return nil + } + out := new(SortParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetric) DeepCopyInto(out *SpansMetric) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetric. +func (in *SpansMetric) DeepCopy() *SpansMetric { + if in == nil { + return nil + } + out := new(SpansMetric) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SpansMetric) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricComputeInitParameters) DeepCopyInto(out *SpansMetricComputeInitParameters) { + *out = *in + if in.AggregationType != nil { + in, out := &in.AggregationType, &out.AggregationType + *out = new(string) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricComputeInitParameters. +func (in *SpansMetricComputeInitParameters) DeepCopy() *SpansMetricComputeInitParameters { + if in == nil { + return nil + } + out := new(SpansMetricComputeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricComputeObservation) DeepCopyInto(out *SpansMetricComputeObservation) { + *out = *in + if in.AggregationType != nil { + in, out := &in.AggregationType, &out.AggregationType + *out = new(string) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricComputeObservation. +func (in *SpansMetricComputeObservation) DeepCopy() *SpansMetricComputeObservation { + if in == nil { + return nil + } + out := new(SpansMetricComputeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricComputeParameters) DeepCopyInto(out *SpansMetricComputeParameters) { + *out = *in + if in.AggregationType != nil { + in, out := &in.AggregationType, &out.AggregationType + *out = new(string) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricComputeParameters. +func (in *SpansMetricComputeParameters) DeepCopy() *SpansMetricComputeParameters { + if in == nil { + return nil + } + out := new(SpansMetricComputeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricGroupByInitParameters) DeepCopyInto(out *SpansMetricGroupByInitParameters) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.TagName != nil { + in, out := &in.TagName, &out.TagName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricGroupByInitParameters. +func (in *SpansMetricGroupByInitParameters) DeepCopy() *SpansMetricGroupByInitParameters { + if in == nil { + return nil + } + out := new(SpansMetricGroupByInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricGroupByObservation) DeepCopyInto(out *SpansMetricGroupByObservation) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.TagName != nil { + in, out := &in.TagName, &out.TagName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricGroupByObservation. +func (in *SpansMetricGroupByObservation) DeepCopy() *SpansMetricGroupByObservation { + if in == nil { + return nil + } + out := new(SpansMetricGroupByObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricGroupByParameters) DeepCopyInto(out *SpansMetricGroupByParameters) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.TagName != nil { + in, out := &in.TagName, &out.TagName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricGroupByParameters. +func (in *SpansMetricGroupByParameters) DeepCopy() *SpansMetricGroupByParameters { + if in == nil { + return nil + } + out := new(SpansMetricGroupByParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricInitParameters) DeepCopyInto(out *SpansMetricInitParameters) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = new(SpansMetricComputeInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterInitParameters) + (*in).DeepCopyInto(*out) + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]SpansMetricGroupByInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricInitParameters. +func (in *SpansMetricInitParameters) DeepCopy() *SpansMetricInitParameters { + if in == nil { + return nil + } + out := new(SpansMetricInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricList) DeepCopyInto(out *SpansMetricList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]SpansMetric, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricList. +func (in *SpansMetricList) DeepCopy() *SpansMetricList { + if in == nil { + return nil + } + out := new(SpansMetricList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SpansMetricList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricObservation) DeepCopyInto(out *SpansMetricObservation) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = new(SpansMetricComputeObservation) + (*in).DeepCopyInto(*out) + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterObservation) + (*in).DeepCopyInto(*out) + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]SpansMetricGroupByObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricObservation. +func (in *SpansMetricObservation) DeepCopy() *SpansMetricObservation { + if in == nil { + return nil + } + out := new(SpansMetricObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricParameters) DeepCopyInto(out *SpansMetricParameters) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = new(SpansMetricComputeParameters) + (*in).DeepCopyInto(*out) + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = new(FilterParameters) + (*in).DeepCopyInto(*out) + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]SpansMetricGroupByParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricParameters. +func (in *SpansMetricParameters) DeepCopy() *SpansMetricParameters { + if in == nil { + return nil + } + out := new(SpansMetricParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricSpec) DeepCopyInto(out *SpansMetricSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricSpec. +func (in *SpansMetricSpec) DeepCopy() *SpansMetricSpec { + if in == nil { + return nil + } + out := new(SpansMetricSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpansMetricStatus) DeepCopyInto(out *SpansMetricStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpansMetricStatus. +func (in *SpansMetricStatus) DeepCopy() *SpansMetricStatus { + if in == nil { + return nil + } + out := new(SpansMetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagPolicyInitParameters) DeepCopyInto(out *TagPolicyInitParameters) { + *out = *in + if in.TagKey != nil { + in, out := &in.TagKey, &out.TagKey + *out = new(string) + **out = **in + } + if in.TagKeyRequired != nil { + in, out := &in.TagKeyRequired, &out.TagKeyRequired + *out = new(bool) + **out = **in + } + if in.ValidTagValues != nil { + in, out := &in.ValidTagValues, &out.ValidTagValues + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagPolicyInitParameters. +func (in *TagPolicyInitParameters) DeepCopy() *TagPolicyInitParameters { + if in == nil { + return nil + } + out := new(TagPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagPolicyObservation) DeepCopyInto(out *TagPolicyObservation) { + *out = *in + if in.TagKey != nil { + in, out := &in.TagKey, &out.TagKey + *out = new(string) + **out = **in + } + if in.TagKeyRequired != nil { + in, out := &in.TagKeyRequired, &out.TagKeyRequired + *out = new(bool) + **out = **in + } + if in.ValidTagValues != nil { + in, out := &in.ValidTagValues, &out.ValidTagValues + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagPolicyObservation. +func (in *TagPolicyObservation) DeepCopy() *TagPolicyObservation { + if in == nil { + return nil + } + out := new(TagPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagPolicyParameters) DeepCopyInto(out *TagPolicyParameters) { + *out = *in + if in.TagKey != nil { + in, out := &in.TagKey, &out.TagKey + *out = new(string) + **out = **in + } + if in.TagKeyRequired != nil { + in, out := &in.TagKeyRequired, &out.TagKeyRequired + *out = new(bool) + **out = **in + } + if in.ValidTagValues != nil { + in, out := &in.ValidTagValues, &out.ValidTagValues + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagPolicyParameters. +func (in *TagPolicyParameters) DeepCopy() *TagPolicyParameters { + if in == nil { + return nil + } + out := new(TagPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Team) DeepCopyInto(out *Team) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Team. +func (in *Team) DeepCopy() *Team { + if in == nil { + return nil + } + out := new(Team) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Team) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamInitParameters) DeepCopyInto(out *TeamInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Handle != nil { + in, out := &in.Handle, &out.Handle + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamInitParameters. +func (in *TeamInitParameters) DeepCopy() *TeamInitParameters { + if in == nil { + return nil + } + out := new(TeamInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamLink) DeepCopyInto(out *TeamLink) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamLink. +func (in *TeamLink) DeepCopy() *TeamLink { + if in == nil { + return nil + } + out := new(TeamLink) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TeamLink) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamLinkInitParameters) DeepCopyInto(out *TeamLinkInitParameters) { + *out = *in + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.Position != nil { + in, out := &in.Position, &out.Position + *out = new(float64) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamLinkInitParameters. +func (in *TeamLinkInitParameters) DeepCopy() *TeamLinkInitParameters { + if in == nil { + return nil + } + out := new(TeamLinkInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamLinkList) DeepCopyInto(out *TeamLinkList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]TeamLink, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamLinkList. +func (in *TeamLinkList) DeepCopy() *TeamLinkList { + if in == nil { + return nil + } + out := new(TeamLinkList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TeamLinkList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamLinkObservation) DeepCopyInto(out *TeamLinkObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.Position != nil { + in, out := &in.Position, &out.Position + *out = new(float64) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamLinkObservation. +func (in *TeamLinkObservation) DeepCopy() *TeamLinkObservation { + if in == nil { + return nil + } + out := new(TeamLinkObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamLinkParameters) DeepCopyInto(out *TeamLinkParameters) { + *out = *in + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.Position != nil { + in, out := &in.Position, &out.Position + *out = new(float64) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamLinkParameters. +func (in *TeamLinkParameters) DeepCopy() *TeamLinkParameters { + if in == nil { + return nil + } + out := new(TeamLinkParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamLinkSpec) DeepCopyInto(out *TeamLinkSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamLinkSpec. +func (in *TeamLinkSpec) DeepCopy() *TeamLinkSpec { + if in == nil { + return nil + } + out := new(TeamLinkSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamLinkStatus) DeepCopyInto(out *TeamLinkStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamLinkStatus. +func (in *TeamLinkStatus) DeepCopy() *TeamLinkStatus { + if in == nil { + return nil + } + out := new(TeamLinkStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamList) DeepCopyInto(out *TeamList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Team, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamList. +func (in *TeamList) DeepCopy() *TeamList { + if in == nil { + return nil + } + out := new(TeamList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TeamList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamMembership) DeepCopyInto(out *TeamMembership) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamMembership. +func (in *TeamMembership) DeepCopy() *TeamMembership { + if in == nil { + return nil + } + out := new(TeamMembership) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TeamMembership) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamMembershipInitParameters) DeepCopyInto(out *TeamMembershipInitParameters) { + *out = *in + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.UserID != nil { + in, out := &in.UserID, &out.UserID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamMembershipInitParameters. +func (in *TeamMembershipInitParameters) DeepCopy() *TeamMembershipInitParameters { + if in == nil { + return nil + } + out := new(TeamMembershipInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamMembershipList) DeepCopyInto(out *TeamMembershipList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]TeamMembership, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamMembershipList. +func (in *TeamMembershipList) DeepCopy() *TeamMembershipList { + if in == nil { + return nil + } + out := new(TeamMembershipList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TeamMembershipList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamMembershipObservation) DeepCopyInto(out *TeamMembershipObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.UserID != nil { + in, out := &in.UserID, &out.UserID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamMembershipObservation. +func (in *TeamMembershipObservation) DeepCopy() *TeamMembershipObservation { + if in == nil { + return nil + } + out := new(TeamMembershipObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamMembershipParameters) DeepCopyInto(out *TeamMembershipParameters) { + *out = *in + if in.Role != nil { + in, out := &in.Role, &out.Role + *out = new(string) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.UserID != nil { + in, out := &in.UserID, &out.UserID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamMembershipParameters. +func (in *TeamMembershipParameters) DeepCopy() *TeamMembershipParameters { + if in == nil { + return nil + } + out := new(TeamMembershipParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamMembershipSpec) DeepCopyInto(out *TeamMembershipSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamMembershipSpec. +func (in *TeamMembershipSpec) DeepCopy() *TeamMembershipSpec { + if in == nil { + return nil + } + out := new(TeamMembershipSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamMembershipStatus) DeepCopyInto(out *TeamMembershipStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamMembershipStatus. +func (in *TeamMembershipStatus) DeepCopy() *TeamMembershipStatus { + if in == nil { + return nil + } + out := new(TeamMembershipStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamObservation) DeepCopyInto(out *TeamObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Handle != nil { + in, out := &in.Handle, &out.Handle + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.LinkCount != nil { + in, out := &in.LinkCount, &out.LinkCount + *out = new(float64) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Summary != nil { + in, out := &in.Summary, &out.Summary + *out = new(string) + **out = **in + } + if in.UserCount != nil { + in, out := &in.UserCount, &out.UserCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamObservation. +func (in *TeamObservation) DeepCopy() *TeamObservation { + if in == nil { + return nil + } + out := new(TeamObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamParameters) DeepCopyInto(out *TeamParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Handle != nil { + in, out := &in.Handle, &out.Handle + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamParameters. +func (in *TeamParameters) DeepCopy() *TeamParameters { + if in == nil { + return nil + } + out := new(TeamParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamPermissionSetting) DeepCopyInto(out *TeamPermissionSetting) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPermissionSetting. +func (in *TeamPermissionSetting) DeepCopy() *TeamPermissionSetting { + if in == nil { + return nil + } + out := new(TeamPermissionSetting) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TeamPermissionSetting) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamPermissionSettingInitParameters) DeepCopyInto(out *TeamPermissionSettingInitParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPermissionSettingInitParameters. +func (in *TeamPermissionSettingInitParameters) DeepCopy() *TeamPermissionSettingInitParameters { + if in == nil { + return nil + } + out := new(TeamPermissionSettingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamPermissionSettingList) DeepCopyInto(out *TeamPermissionSettingList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]TeamPermissionSetting, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPermissionSettingList. +func (in *TeamPermissionSettingList) DeepCopy() *TeamPermissionSettingList { + if in == nil { + return nil + } + out := new(TeamPermissionSettingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TeamPermissionSettingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamPermissionSettingObservation) DeepCopyInto(out *TeamPermissionSettingObservation) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPermissionSettingObservation. +func (in *TeamPermissionSettingObservation) DeepCopy() *TeamPermissionSettingObservation { + if in == nil { + return nil + } + out := new(TeamPermissionSettingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamPermissionSettingParameters) DeepCopyInto(out *TeamPermissionSettingParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.TeamID != nil { + in, out := &in.TeamID, &out.TeamID + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPermissionSettingParameters. +func (in *TeamPermissionSettingParameters) DeepCopy() *TeamPermissionSettingParameters { + if in == nil { + return nil + } + out := new(TeamPermissionSettingParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamPermissionSettingSpec) DeepCopyInto(out *TeamPermissionSettingSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPermissionSettingSpec. +func (in *TeamPermissionSettingSpec) DeepCopy() *TeamPermissionSettingSpec { + if in == nil { + return nil + } + out := new(TeamPermissionSettingSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamPermissionSettingStatus) DeepCopyInto(out *TeamPermissionSettingStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPermissionSettingStatus. +func (in *TeamPermissionSettingStatus) DeepCopy() *TeamPermissionSettingStatus { + if in == nil { + return nil + } + out := new(TeamPermissionSettingStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamSpec) DeepCopyInto(out *TeamSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamSpec. +func (in *TeamSpec) DeepCopy() *TeamSpec { + if in == nil { + return nil + } + out := new(TeamSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TeamStatus) DeepCopyInto(out *TeamStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamStatus. +func (in *TeamStatus) DeepCopy() *TeamStatus { + if in == nil { + return nil + } + out := new(TeamStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TemplateVariablesInitParameters) DeepCopyInto(out *TemplateVariablesInitParameters) { + *out = *in + if in.Defaults != nil { + in, out := &in.Defaults, &out.Defaults + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplateVariablesInitParameters. +func (in *TemplateVariablesInitParameters) DeepCopy() *TemplateVariablesInitParameters { + if in == nil { + return nil + } + out := new(TemplateVariablesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TemplateVariablesObservation) DeepCopyInto(out *TemplateVariablesObservation) { + *out = *in + if in.Defaults != nil { + in, out := &in.Defaults, &out.Defaults + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplateVariablesObservation. +func (in *TemplateVariablesObservation) DeepCopy() *TemplateVariablesObservation { + if in == nil { + return nil + } + out := new(TemplateVariablesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TemplateVariablesParameters) DeepCopyInto(out *TemplateVariablesParameters) { + *out = *in + if in.Defaults != nil { + in, out := &in.Defaults, &out.Defaults + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplateVariablesParameters. +func (in *TemplateVariablesParameters) DeepCopy() *TemplateVariablesParameters { + if in == nil { + return nil + } + out := new(TemplateVariablesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThresholdsInitParameters) DeepCopyInto(out *ThresholdsInitParameters) { + *out = *in + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(float64) + **out = **in + } + if in.Timeframe != nil { + in, out := &in.Timeframe, &out.Timeframe + *out = new(string) + **out = **in + } + if in.Warning != nil { + in, out := &in.Warning, &out.Warning + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThresholdsInitParameters. +func (in *ThresholdsInitParameters) DeepCopy() *ThresholdsInitParameters { + if in == nil { + return nil + } + out := new(ThresholdsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThresholdsObservation) DeepCopyInto(out *ThresholdsObservation) { + *out = *in + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(float64) + **out = **in + } + if in.TargetDisplay != nil { + in, out := &in.TargetDisplay, &out.TargetDisplay + *out = new(string) + **out = **in + } + if in.Timeframe != nil { + in, out := &in.Timeframe, &out.Timeframe + *out = new(string) + **out = **in + } + if in.Warning != nil { + in, out := &in.Warning, &out.Warning + *out = new(float64) + **out = **in + } + if in.WarningDisplay != nil { + in, out := &in.WarningDisplay, &out.WarningDisplay + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThresholdsObservation. +func (in *ThresholdsObservation) DeepCopy() *ThresholdsObservation { + if in == nil { + return nil + } + out := new(ThresholdsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThresholdsParameters) DeepCopyInto(out *ThresholdsParameters) { + *out = *in + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(float64) + **out = **in + } + if in.Timeframe != nil { + in, out := &in.Timeframe, &out.Timeframe + *out = new(string) + **out = **in + } + if in.Warning != nil { + in, out := &in.Warning, &out.Warning + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThresholdsParameters. +func (in *ThresholdsParameters) DeepCopy() *ThresholdsParameters { + if in == nil { + return nil + } + out := new(ThresholdsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TimeSliceInitParameters) DeepCopyInto(out *TimeSliceInitParameters) { + *out = *in + if in.Comparator != nil { + in, out := &in.Comparator, &out.Comparator + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]TimeSliceQueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Threshold != nil { + in, out := &in.Threshold, &out.Threshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeSliceInitParameters. +func (in *TimeSliceInitParameters) DeepCopy() *TimeSliceInitParameters { + if in == nil { + return nil + } + out := new(TimeSliceInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TimeSliceObservation) DeepCopyInto(out *TimeSliceObservation) { + *out = *in + if in.Comparator != nil { + in, out := &in.Comparator, &out.Comparator + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]TimeSliceQueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Threshold != nil { + in, out := &in.Threshold, &out.Threshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeSliceObservation. +func (in *TimeSliceObservation) DeepCopy() *TimeSliceObservation { + if in == nil { + return nil + } + out := new(TimeSliceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TimeSliceParameters) DeepCopyInto(out *TimeSliceParameters) { + *out = *in + if in.Comparator != nil { + in, out := &in.Comparator, &out.Comparator + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]TimeSliceQueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Threshold != nil { + in, out := &in.Threshold, &out.Threshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeSliceParameters. +func (in *TimeSliceParameters) DeepCopy() *TimeSliceParameters { + if in == nil { + return nil + } + out := new(TimeSliceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TimeSliceQueryInitParameters) DeepCopyInto(out *TimeSliceQueryInitParameters) { + *out = *in + if in.Formula != nil { + in, out := &in.Formula, &out.Formula + *out = make([]FormulaInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryQueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeSliceQueryInitParameters. +func (in *TimeSliceQueryInitParameters) DeepCopy() *TimeSliceQueryInitParameters { + if in == nil { + return nil + } + out := new(TimeSliceQueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TimeSliceQueryObservation) DeepCopyInto(out *TimeSliceQueryObservation) { + *out = *in + if in.Formula != nil { + in, out := &in.Formula, &out.Formula + *out = make([]FormulaObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryQueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeSliceQueryObservation. +func (in *TimeSliceQueryObservation) DeepCopy() *TimeSliceQueryObservation { + if in == nil { + return nil + } + out := new(TimeSliceQueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TimeSliceQueryParameters) DeepCopyInto(out *TimeSliceQueryParameters) { + *out = *in + if in.Formula != nil { + in, out := &in.Formula, &out.Formula + *out = make([]FormulaParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryQueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeSliceQueryParameters. +func (in *TimeSliceQueryParameters) DeepCopy() *TimeSliceQueryParameters { + if in == nil { + return nil + } + out := new(TimeSliceQueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *User) DeepCopyInto(out *User) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User. +func (in *User) DeepCopy() *User { + if in == nil { + return nil + } + out := new(User) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *User) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserInitParameters) DeepCopyInto(out *UserInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserInitParameters. +func (in *UserInitParameters) DeepCopy() *UserInitParameters { + if in == nil { + return nil + } + out := new(UserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserInitParameters_2) DeepCopyInto(out *UserInitParameters_2) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Roles != nil { + in, out := &in.Roles, &out.Roles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SendUserInvitation != nil { + in, out := &in.SendUserInvitation, &out.SendUserInvitation + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserInitParameters_2. +func (in *UserInitParameters_2) DeepCopy() *UserInitParameters_2 { + if in == nil { + return nil + } + out := new(UserInitParameters_2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserList) DeepCopyInto(out *UserList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]User, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserList. +func (in *UserList) DeepCopy() *UserList { + if in == nil { + return nil + } + out := new(UserList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *UserList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserObservation) DeepCopyInto(out *UserObservation) { + *out = *in + if in.AccessRole != nil { + in, out := &in.AccessRole, &out.AccessRole + *out = new(string) + **out = **in + } + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserObservation. +func (in *UserObservation) DeepCopy() *UserObservation { + if in == nil { + return nil + } + out := new(UserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserObservation_2) DeepCopyInto(out *UserObservation_2) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Roles != nil { + in, out := &in.Roles, &out.Roles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SendUserInvitation != nil { + in, out := &in.SendUserInvitation, &out.SendUserInvitation + *out = new(bool) + **out = **in + } + if in.UserInvitationID != nil { + in, out := &in.UserInvitationID, &out.UserInvitationID + *out = new(string) + **out = **in + } + if in.Verified != nil { + in, out := &in.Verified, &out.Verified + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserObservation_2. +func (in *UserObservation_2) DeepCopy() *UserObservation_2 { + if in == nil { + return nil + } + out := new(UserObservation_2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserParameters) DeepCopyInto(out *UserParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserParameters. +func (in *UserParameters) DeepCopy() *UserParameters { + if in == nil { + return nil + } + out := new(UserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserParameters_2) DeepCopyInto(out *UserParameters_2) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **out = **in + } + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Roles != nil { + in, out := &in.Roles, &out.Roles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SendUserInvitation != nil { + in, out := &in.SendUserInvitation, &out.SendUserInvitation + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserParameters_2. +func (in *UserParameters_2) DeepCopy() *UserParameters_2 { + if in == nil { + return nil + } + out := new(UserParameters_2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserSpec) DeepCopyInto(out *UserSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserSpec. +func (in *UserSpec) DeepCopy() *UserSpec { + if in == nil { + return nil + } + out := new(UserSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserStatus) DeepCopyInto(out *UserStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserStatus. +func (in *UserStatus) DeepCopy() *UserStatus { + if in == nil { + return nil + } + out := new(UserStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VariablesInitParameters) DeepCopyInto(out *VariablesInitParameters) { + *out = *in + if in.EventQuery != nil { + in, out := &in.EventQuery, &out.EventQuery + *out = make([]EventQueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariablesInitParameters. +func (in *VariablesInitParameters) DeepCopy() *VariablesInitParameters { + if in == nil { + return nil + } + out := new(VariablesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VariablesObservation) DeepCopyInto(out *VariablesObservation) { + *out = *in + if in.EventQuery != nil { + in, out := &in.EventQuery, &out.EventQuery + *out = make([]EventQueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariablesObservation. +func (in *VariablesObservation) DeepCopy() *VariablesObservation { + if in == nil { + return nil + } + out := new(VariablesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VariablesParameters) DeepCopyInto(out *VariablesParameters) { + *out = *in + if in.EventQuery != nil { + in, out := &in.EventQuery, &out.EventQuery + *out = make([]EventQueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariablesParameters. +func (in *VariablesParameters) DeepCopy() *VariablesParameters { + if in == nil { + return nil + } + out := new(VariablesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Webhook) DeepCopyInto(out *Webhook) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Webhook. +func (in *Webhook) DeepCopy() *Webhook { + if in == nil { + return nil + } + out := new(Webhook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Webhook) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookCustomVariable) DeepCopyInto(out *WebhookCustomVariable) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookCustomVariable. +func (in *WebhookCustomVariable) DeepCopy() *WebhookCustomVariable { + if in == nil { + return nil + } + out := new(WebhookCustomVariable) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *WebhookCustomVariable) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookCustomVariableInitParameters) DeepCopyInto(out *WebhookCustomVariableInitParameters) { + *out = *in + if in.IsSecret != nil { + in, out := &in.IsSecret, &out.IsSecret + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookCustomVariableInitParameters. +func (in *WebhookCustomVariableInitParameters) DeepCopy() *WebhookCustomVariableInitParameters { + if in == nil { + return nil + } + out := new(WebhookCustomVariableInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookCustomVariableList) DeepCopyInto(out *WebhookCustomVariableList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]WebhookCustomVariable, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookCustomVariableList. +func (in *WebhookCustomVariableList) DeepCopy() *WebhookCustomVariableList { + if in == nil { + return nil + } + out := new(WebhookCustomVariableList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *WebhookCustomVariableList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookCustomVariableObservation) DeepCopyInto(out *WebhookCustomVariableObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IsSecret != nil { + in, out := &in.IsSecret, &out.IsSecret + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookCustomVariableObservation. +func (in *WebhookCustomVariableObservation) DeepCopy() *WebhookCustomVariableObservation { + if in == nil { + return nil + } + out := new(WebhookCustomVariableObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookCustomVariableParameters) DeepCopyInto(out *WebhookCustomVariableParameters) { + *out = *in + if in.IsSecret != nil { + in, out := &in.IsSecret, &out.IsSecret + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + out.ValueSecretRef = in.ValueSecretRef +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookCustomVariableParameters. +func (in *WebhookCustomVariableParameters) DeepCopy() *WebhookCustomVariableParameters { + if in == nil { + return nil + } + out := new(WebhookCustomVariableParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookCustomVariableSpec) DeepCopyInto(out *WebhookCustomVariableSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookCustomVariableSpec. +func (in *WebhookCustomVariableSpec) DeepCopy() *WebhookCustomVariableSpec { + if in == nil { + return nil + } + out := new(WebhookCustomVariableSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookCustomVariableStatus) DeepCopyInto(out *WebhookCustomVariableStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookCustomVariableStatus. +func (in *WebhookCustomVariableStatus) DeepCopy() *WebhookCustomVariableStatus { + if in == nil { + return nil + } + out := new(WebhookCustomVariableStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookInitParameters) DeepCopyInto(out *WebhookInitParameters) { + *out = *in + if in.CustomHeaders != nil { + in, out := &in.CustomHeaders, &out.CustomHeaders + *out = new(string) + **out = **in + } + if in.EncodeAs != nil { + in, out := &in.EncodeAs, &out.EncodeAs + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookInitParameters. +func (in *WebhookInitParameters) DeepCopy() *WebhookInitParameters { + if in == nil { + return nil + } + out := new(WebhookInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookList) DeepCopyInto(out *WebhookList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Webhook, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookList. +func (in *WebhookList) DeepCopy() *WebhookList { + if in == nil { + return nil + } + out := new(WebhookList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *WebhookList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookObservation) DeepCopyInto(out *WebhookObservation) { + *out = *in + if in.CustomHeaders != nil { + in, out := &in.CustomHeaders, &out.CustomHeaders + *out = new(string) + **out = **in + } + if in.EncodeAs != nil { + in, out := &in.EncodeAs, &out.EncodeAs + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookObservation. +func (in *WebhookObservation) DeepCopy() *WebhookObservation { + if in == nil { + return nil + } + out := new(WebhookObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookParameters) DeepCopyInto(out *WebhookParameters) { + *out = *in + if in.CustomHeaders != nil { + in, out := &in.CustomHeaders, &out.CustomHeaders + *out = new(string) + **out = **in + } + if in.EncodeAs != nil { + in, out := &in.EncodeAs, &out.EncodeAs + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookParameters. +func (in *WebhookParameters) DeepCopy() *WebhookParameters { + if in == nil { + return nil + } + out := new(WebhookParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookSpec) DeepCopyInto(out *WebhookSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookSpec. +func (in *WebhookSpec) DeepCopy() *WebhookSpec { + if in == nil { + return nil + } + out := new(WebhookSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebhookStatus) DeepCopyInto(out *WebhookStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookStatus. +func (in *WebhookStatus) DeepCopy() *WebhookStatus { + if in == nil { + return nil + } + out := new(WebhookStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/datadog/v1alpha1/zz_generated.managed.go b/apis/datadog/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..ba0af33 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_generated.managed.go @@ -0,0 +1,1808 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this APIKey. +func (mg *APIKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this APIKey. +func (mg *APIKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this APIKey. +func (mg *APIKey) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this APIKey. +func (mg *APIKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this APIKey. +func (mg *APIKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this APIKey. +func (mg *APIKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this APIKey. +func (mg *APIKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this APIKey. +func (mg *APIKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this APIKey. +func (mg *APIKey) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this APIKey. +func (mg *APIKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this APIKey. +func (mg *APIKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this APIKey. +func (mg *APIKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this AppKey. +func (mg *AppKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this AppKey. +func (mg *AppKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this AppKey. +func (mg *AppKey) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this AppKey. +func (mg *AppKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this AppKey. +func (mg *AppKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this AppKey. +func (mg *AppKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this AppKey. +func (mg *AppKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this AppKey. +func (mg *AppKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this AppKey. +func (mg *AppKey) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this AppKey. +func (mg *AppKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this AppKey. +func (mg *AppKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this AppKey. +func (mg *AppKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this AuthnMapping. +func (mg *AuthnMapping) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this AuthnMapping. +func (mg *AuthnMapping) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this AuthnMapping. +func (mg *AuthnMapping) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this AuthnMapping. +func (mg *AuthnMapping) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this AuthnMapping. +func (mg *AuthnMapping) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this AuthnMapping. +func (mg *AuthnMapping) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this AuthnMapping. +func (mg *AuthnMapping) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this AuthnMapping. +func (mg *AuthnMapping) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this AuthnMapping. +func (mg *AuthnMapping) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this AuthnMapping. +func (mg *AuthnMapping) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this AuthnMapping. +func (mg *AuthnMapping) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this AuthnMapping. +func (mg *AuthnMapping) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ChildOrganization. +func (mg *ChildOrganization) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ChildOrganization. +func (mg *ChildOrganization) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ChildOrganization. +func (mg *ChildOrganization) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ChildOrganization. +func (mg *ChildOrganization) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ChildOrganization. +func (mg *ChildOrganization) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ChildOrganization. +func (mg *ChildOrganization) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ChildOrganization. +func (mg *ChildOrganization) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ChildOrganization. +func (mg *ChildOrganization) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ChildOrganization. +func (mg *ChildOrganization) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ChildOrganization. +func (mg *ChildOrganization) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ChildOrganization. +func (mg *ChildOrganization) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ChildOrganization. +func (mg *ChildOrganization) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this DashboardJSON. +func (mg *DashboardJSON) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this DashboardJSON. +func (mg *DashboardJSON) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this DashboardJSON. +func (mg *DashboardJSON) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this DashboardJSON. +func (mg *DashboardJSON) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this DashboardJSON. +func (mg *DashboardJSON) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this DashboardJSON. +func (mg *DashboardJSON) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this DashboardJSON. +func (mg *DashboardJSON) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this DashboardJSON. +func (mg *DashboardJSON) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this DashboardJSON. +func (mg *DashboardJSON) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this DashboardJSON. +func (mg *DashboardJSON) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this DashboardJSON. +func (mg *DashboardJSON) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this DashboardJSON. +func (mg *DashboardJSON) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this DashboardList. +func (mg *DashboardList) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this DashboardList. +func (mg *DashboardList) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this DashboardList. +func (mg *DashboardList) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this DashboardList. +func (mg *DashboardList) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this DashboardList. +func (mg *DashboardList) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this DashboardList. +func (mg *DashboardList) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this DashboardList. +func (mg *DashboardList) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this DashboardList. +func (mg *DashboardList) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this DashboardList. +func (mg *DashboardList) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this DashboardList. +func (mg *DashboardList) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this DashboardList. +func (mg *DashboardList) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this DashboardList. +func (mg *DashboardList) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Downtime. +func (mg *Downtime) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Downtime. +func (mg *Downtime) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Downtime. +func (mg *Downtime) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Downtime. +func (mg *Downtime) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Downtime. +func (mg *Downtime) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Downtime. +func (mg *Downtime) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Downtime. +func (mg *Downtime) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Downtime. +func (mg *Downtime) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Downtime. +func (mg *Downtime) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Downtime. +func (mg *Downtime) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Downtime. +func (mg *Downtime) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Downtime. +func (mg *Downtime) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this DowntimeSchedule. +func (mg *DowntimeSchedule) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this DowntimeSchedule. +func (mg *DowntimeSchedule) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this DowntimeSchedule. +func (mg *DowntimeSchedule) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this DowntimeSchedule. +func (mg *DowntimeSchedule) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this DowntimeSchedule. +func (mg *DowntimeSchedule) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this DowntimeSchedule. +func (mg *DowntimeSchedule) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this DowntimeSchedule. +func (mg *DowntimeSchedule) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this DowntimeSchedule. +func (mg *DowntimeSchedule) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this DowntimeSchedule. +func (mg *DowntimeSchedule) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this DowntimeSchedule. +func (mg *DowntimeSchedule) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this DowntimeSchedule. +func (mg *DowntimeSchedule) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this DowntimeSchedule. +func (mg *DowntimeSchedule) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this IPAllowList. +func (mg *IPAllowList) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this IPAllowList. +func (mg *IPAllowList) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this IPAllowList. +func (mg *IPAllowList) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this IPAllowList. +func (mg *IPAllowList) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this IPAllowList. +func (mg *IPAllowList) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this IPAllowList. +func (mg *IPAllowList) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this IPAllowList. +func (mg *IPAllowList) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this IPAllowList. +func (mg *IPAllowList) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this IPAllowList. +func (mg *IPAllowList) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this IPAllowList. +func (mg *IPAllowList) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this IPAllowList. +func (mg *IPAllowList) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this IPAllowList. +func (mg *IPAllowList) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Monitor. +func (mg *Monitor) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Monitor. +func (mg *Monitor) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Monitor. +func (mg *Monitor) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Monitor. +func (mg *Monitor) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Monitor. +func (mg *Monitor) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Monitor. +func (mg *Monitor) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Monitor. +func (mg *Monitor) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Monitor. +func (mg *Monitor) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Monitor. +func (mg *Monitor) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Monitor. +func (mg *Monitor) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Monitor. +func (mg *Monitor) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Monitor. +func (mg *Monitor) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this MonitorConfigPolicy. +func (mg *MonitorConfigPolicy) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this MonitorJSON. +func (mg *MonitorJSON) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this MonitorJSON. +func (mg *MonitorJSON) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this MonitorJSON. +func (mg *MonitorJSON) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this MonitorJSON. +func (mg *MonitorJSON) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this MonitorJSON. +func (mg *MonitorJSON) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this MonitorJSON. +func (mg *MonitorJSON) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this MonitorJSON. +func (mg *MonitorJSON) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this MonitorJSON. +func (mg *MonitorJSON) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this MonitorJSON. +func (mg *MonitorJSON) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this MonitorJSON. +func (mg *MonitorJSON) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this MonitorJSON. +func (mg *MonitorJSON) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this MonitorJSON. +func (mg *MonitorJSON) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this OrganizationSettings. +func (mg *OrganizationSettings) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this OrganizationSettings. +func (mg *OrganizationSettings) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this OrganizationSettings. +func (mg *OrganizationSettings) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this OrganizationSettings. +func (mg *OrganizationSettings) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this OrganizationSettings. +func (mg *OrganizationSettings) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this OrganizationSettings. +func (mg *OrganizationSettings) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this OrganizationSettings. +func (mg *OrganizationSettings) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this OrganizationSettings. +func (mg *OrganizationSettings) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this OrganizationSettings. +func (mg *OrganizationSettings) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this OrganizationSettings. +func (mg *OrganizationSettings) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this OrganizationSettings. +func (mg *OrganizationSettings) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this OrganizationSettings. +func (mg *OrganizationSettings) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Powerpack. +func (mg *Powerpack) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Powerpack. +func (mg *Powerpack) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Powerpack. +func (mg *Powerpack) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Powerpack. +func (mg *Powerpack) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Powerpack. +func (mg *Powerpack) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Powerpack. +func (mg *Powerpack) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Powerpack. +func (mg *Powerpack) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Powerpack. +func (mg *Powerpack) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Powerpack. +func (mg *Powerpack) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Powerpack. +func (mg *Powerpack) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Powerpack. +func (mg *Powerpack) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Powerpack. +func (mg *Powerpack) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this RUMApplication. +func (mg *RUMApplication) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this RUMApplication. +func (mg *RUMApplication) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this RUMApplication. +func (mg *RUMApplication) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this RUMApplication. +func (mg *RUMApplication) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this RUMApplication. +func (mg *RUMApplication) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this RUMApplication. +func (mg *RUMApplication) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this RUMApplication. +func (mg *RUMApplication) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this RUMApplication. +func (mg *RUMApplication) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this RUMApplication. +func (mg *RUMApplication) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this RUMApplication. +func (mg *RUMApplication) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this RUMApplication. +func (mg *RUMApplication) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this RUMApplication. +func (mg *RUMApplication) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this RestrictionPolicy. +func (mg *RestrictionPolicy) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this RestrictionPolicy. +func (mg *RestrictionPolicy) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this RestrictionPolicy. +func (mg *RestrictionPolicy) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this RestrictionPolicy. +func (mg *RestrictionPolicy) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this RestrictionPolicy. +func (mg *RestrictionPolicy) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this RestrictionPolicy. +func (mg *RestrictionPolicy) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this RestrictionPolicy. +func (mg *RestrictionPolicy) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this RestrictionPolicy. +func (mg *RestrictionPolicy) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this RestrictionPolicy. +func (mg *RestrictionPolicy) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this RestrictionPolicy. +func (mg *RestrictionPolicy) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this RestrictionPolicy. +func (mg *RestrictionPolicy) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this RestrictionPolicy. +func (mg *RestrictionPolicy) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Role. +func (mg *Role) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Role. +func (mg *Role) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Role. +func (mg *Role) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Role. +func (mg *Role) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Role. +func (mg *Role) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Role. +func (mg *Role) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Role. +func (mg *Role) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Role. +func (mg *Role) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Role. +func (mg *Role) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Role. +func (mg *Role) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Role. +func (mg *Role) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Role. +func (mg *Role) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this SLOCorrection. +func (mg *SLOCorrection) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this SLOCorrection. +func (mg *SLOCorrection) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this SLOCorrection. +func (mg *SLOCorrection) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this SLOCorrection. +func (mg *SLOCorrection) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this SLOCorrection. +func (mg *SLOCorrection) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this SLOCorrection. +func (mg *SLOCorrection) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this SLOCorrection. +func (mg *SLOCorrection) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this SLOCorrection. +func (mg *SLOCorrection) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this SLOCorrection. +func (mg *SLOCorrection) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this SLOCorrection. +func (mg *SLOCorrection) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this SLOCorrection. +func (mg *SLOCorrection) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this SLOCorrection. +func (mg *SLOCorrection) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ServiceAccount. +func (mg *ServiceAccount) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ServiceAccount. +func (mg *ServiceAccount) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ServiceAccount. +func (mg *ServiceAccount) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ServiceAccount. +func (mg *ServiceAccount) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ServiceAccount. +func (mg *ServiceAccount) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ServiceAccount. +func (mg *ServiceAccount) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ServiceAccount. +func (mg *ServiceAccount) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ServiceAccount. +func (mg *ServiceAccount) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ServiceAccount. +func (mg *ServiceAccount) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ServiceAccount. +func (mg *ServiceAccount) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ServiceAccount. +func (mg *ServiceAccount) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ServiceAccount. +func (mg *ServiceAccount) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ServiceDefinitionYAML. +func (mg *ServiceDefinitionYAML) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ServiceLevelObjective. +func (mg *ServiceLevelObjective) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this SpansMetric. +func (mg *SpansMetric) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this SpansMetric. +func (mg *SpansMetric) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this SpansMetric. +func (mg *SpansMetric) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this SpansMetric. +func (mg *SpansMetric) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this SpansMetric. +func (mg *SpansMetric) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this SpansMetric. +func (mg *SpansMetric) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this SpansMetric. +func (mg *SpansMetric) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this SpansMetric. +func (mg *SpansMetric) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this SpansMetric. +func (mg *SpansMetric) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this SpansMetric. +func (mg *SpansMetric) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this SpansMetric. +func (mg *SpansMetric) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this SpansMetric. +func (mg *SpansMetric) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Team. +func (mg *Team) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Team. +func (mg *Team) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Team. +func (mg *Team) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Team. +func (mg *Team) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Team. +func (mg *Team) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Team. +func (mg *Team) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Team. +func (mg *Team) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Team. +func (mg *Team) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Team. +func (mg *Team) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Team. +func (mg *Team) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Team. +func (mg *Team) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Team. +func (mg *Team) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this TeamLink. +func (mg *TeamLink) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this TeamLink. +func (mg *TeamLink) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this TeamLink. +func (mg *TeamLink) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this TeamLink. +func (mg *TeamLink) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this TeamLink. +func (mg *TeamLink) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this TeamLink. +func (mg *TeamLink) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this TeamLink. +func (mg *TeamLink) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this TeamLink. +func (mg *TeamLink) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this TeamLink. +func (mg *TeamLink) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this TeamLink. +func (mg *TeamLink) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this TeamLink. +func (mg *TeamLink) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this TeamLink. +func (mg *TeamLink) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this TeamMembership. +func (mg *TeamMembership) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this TeamMembership. +func (mg *TeamMembership) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this TeamMembership. +func (mg *TeamMembership) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this TeamMembership. +func (mg *TeamMembership) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this TeamMembership. +func (mg *TeamMembership) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this TeamMembership. +func (mg *TeamMembership) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this TeamMembership. +func (mg *TeamMembership) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this TeamMembership. +func (mg *TeamMembership) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this TeamMembership. +func (mg *TeamMembership) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this TeamMembership. +func (mg *TeamMembership) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this TeamMembership. +func (mg *TeamMembership) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this TeamMembership. +func (mg *TeamMembership) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this User. +func (mg *User) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this User. +func (mg *User) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this User. +func (mg *User) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this User. +func (mg *User) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this User. +func (mg *User) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this User. +func (mg *User) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this User. +func (mg *User) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this User. +func (mg *User) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this User. +func (mg *User) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this User. +func (mg *User) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this User. +func (mg *User) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this User. +func (mg *User) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Webhook. +func (mg *Webhook) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Webhook. +func (mg *Webhook) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Webhook. +func (mg *Webhook) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Webhook. +func (mg *Webhook) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Webhook. +func (mg *Webhook) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Webhook. +func (mg *Webhook) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Webhook. +func (mg *Webhook) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Webhook. +func (mg *Webhook) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Webhook. +func (mg *Webhook) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Webhook. +func (mg *Webhook) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Webhook. +func (mg *Webhook) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Webhook. +func (mg *Webhook) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this WebhookCustomVariable. +func (mg *WebhookCustomVariable) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/datadog/v1alpha1/zz_generated.managedlist.go b/apis/datadog/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..b10f4df --- /dev/null +++ b/apis/datadog/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,278 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this APIKeyList. +func (l *APIKeyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this AppKeyList. +func (l *AppKeyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this AuthnMappingList. +func (l *AuthnMappingList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ChildOrganizationList. +func (l *ChildOrganizationList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this DashboardJSONList. +func (l *DashboardJSONList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this DashboardListList. +func (l *DashboardListList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this DowntimeList. +func (l *DowntimeList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this DowntimeScheduleList. +func (l *DowntimeScheduleList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this IPAllowListList. +func (l *IPAllowListList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this MonitorConfigPolicyList. +func (l *MonitorConfigPolicyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this MonitorJSONList. +func (l *MonitorJSONList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this MonitorList. +func (l *MonitorList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this OrganizationSettingsList. +func (l *OrganizationSettingsList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this PowerpackList. +func (l *PowerpackList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this RUMApplicationList. +func (l *RUMApplicationList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this RestrictionPolicyList. +func (l *RestrictionPolicyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this RoleList. +func (l *RoleList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this SLOCorrectionList. +func (l *SLOCorrectionList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ServiceAccountApplicationKeyList. +func (l *ServiceAccountApplicationKeyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ServiceAccountList. +func (l *ServiceAccountList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ServiceDefinitionYAMLList. +func (l *ServiceDefinitionYAMLList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ServiceLevelObjectiveList. +func (l *ServiceLevelObjectiveList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this SpansMetricList. +func (l *SpansMetricList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this TeamLinkList. +func (l *TeamLinkList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this TeamList. +func (l *TeamList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this TeamMembershipList. +func (l *TeamMembershipList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this TeamPermissionSettingList. +func (l *TeamPermissionSettingList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this UserList. +func (l *UserList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this WebhookCustomVariableList. +func (l *WebhookCustomVariableList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this WebhookList. +func (l *WebhookList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/datadog/v1alpha1/zz_groupversion_info.go b/apis/datadog/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..9b3459b --- /dev/null +++ b/apis/datadog/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/datadog/v1alpha1/zz_ipallowlist_terraformed.go b/apis/datadog/v1alpha1/zz_ipallowlist_terraformed.go new file mode 100755 index 0000000..b5a4a3b --- /dev/null +++ b/apis/datadog/v1alpha1/zz_ipallowlist_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this IPAllowList +func (mg *IPAllowList) GetTerraformResourceType() string { + return "datadog_ip_allowlist" +} + +// GetConnectionDetailsMapping for this IPAllowList +func (tr *IPAllowList) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this IPAllowList +func (tr *IPAllowList) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this IPAllowList +func (tr *IPAllowList) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this IPAllowList +func (tr *IPAllowList) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this IPAllowList +func (tr *IPAllowList) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this IPAllowList +func (tr *IPAllowList) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this IPAllowList +func (tr *IPAllowList) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this IPAllowList +func (tr *IPAllowList) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this IPAllowList using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *IPAllowList) LateInitialize(attrs []byte) (bool, error) { + params := &IPAllowListParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *IPAllowList) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_ipallowlist_types.go b/apis/datadog/v1alpha1/zz_ipallowlist_types.go new file mode 100755 index 0000000..beabee2 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_ipallowlist_types.go @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type EntryInitParameters struct { + + // IP address or range of addresses. + CidrBlock *string `json:"cidrBlock,omitempty" tf:"cidr_block,omitempty"` + + // Note accompanying IP address. + Note *string `json:"note,omitempty" tf:"note,omitempty"` +} + +type EntryObservation struct { + + // IP address or range of addresses. + CidrBlock *string `json:"cidrBlock,omitempty" tf:"cidr_block,omitempty"` + + // Note accompanying IP address. + Note *string `json:"note,omitempty" tf:"note,omitempty"` +} + +type EntryParameters struct { + + // IP address or range of addresses. + // +kubebuilder:validation:Optional + CidrBlock *string `json:"cidrBlock" tf:"cidr_block,omitempty"` + + // Note accompanying IP address. + // +kubebuilder:validation:Optional + Note *string `json:"note,omitempty" tf:"note,omitempty"` +} + +type IPAllowListInitParameters struct { + + // Whether the IP Allowlist is enabled. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note. + Entry []EntryInitParameters `json:"entry,omitempty" tf:"entry,omitempty"` +} + +type IPAllowListObservation struct { + + // Whether the IP Allowlist is enabled. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note. + Entry []EntryObservation `json:"entry,omitempty" tf:"entry,omitempty"` + + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type IPAllowListParameters struct { + + // Whether the IP Allowlist is enabled. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note. + // +kubebuilder:validation:Optional + Entry []EntryParameters `json:"entry,omitempty" tf:"entry,omitempty"` +} + +// IPAllowListSpec defines the desired state of IPAllowList +type IPAllowListSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider IPAllowListParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider IPAllowListInitParameters `json:"initProvider,omitempty"` +} + +// IPAllowListStatus defines the observed state of IPAllowList. +type IPAllowListStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider IPAllowListObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// IPAllowList is the Schema for the IPAllowLists API. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type IPAllowList struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.enabled) || (has(self.initProvider) && has(self.initProvider.enabled))",message="spec.forProvider.enabled is a required parameter" + Spec IPAllowListSpec `json:"spec"` + Status IPAllowListStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// IPAllowListList contains a list of IPAllowLists +type IPAllowListList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []IPAllowList `json:"items"` +} + +// Repository type metadata. +var ( + IPAllowList_Kind = "IPAllowList" + IPAllowList_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: IPAllowList_Kind}.String() + IPAllowList_KindAPIVersion = IPAllowList_Kind + "." + CRDGroupVersion.String() + IPAllowList_GroupVersionKind = CRDGroupVersion.WithKind(IPAllowList_Kind) +) + +func init() { + SchemeBuilder.Register(&IPAllowList{}, &IPAllowListList{}) +} diff --git a/apis/datadog/v1alpha1/zz_monitor_terraformed.go b/apis/datadog/v1alpha1/zz_monitor_terraformed.go new file mode 100755 index 0000000..bd90048 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_monitor_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Monitor +func (mg *Monitor) GetTerraformResourceType() string { + return "datadog_monitor" +} + +// GetConnectionDetailsMapping for this Monitor +func (tr *Monitor) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Monitor +func (tr *Monitor) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Monitor +func (tr *Monitor) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Monitor +func (tr *Monitor) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Monitor +func (tr *Monitor) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Monitor +func (tr *Monitor) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Monitor +func (tr *Monitor) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Monitor +func (tr *Monitor) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Monitor using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Monitor) LateInitialize(attrs []byte) (bool, error) { + params := &MonitorParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Monitor) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_monitor_types.go b/apis/datadog/v1alpha1/zz_monitor_types.go new file mode 100755 index 0000000..925588f --- /dev/null +++ b/apis/datadog/v1alpha1/zz_monitor_types.go @@ -0,0 +1,1117 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ComputeInitParameters struct { + + // (String) The aggregation methods for event platform queries. Valid values are count, cardinality, median, pc75, pc90, pc95, pc98, pc99, sum, min, max, avg. + // The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (Number) A time interval in milliseconds. + // A time interval in milliseconds. + Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` + + // (String) The measurable attribute to compute. + // The measurable attribute to compute. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` +} + +type ComputeObservation struct { + + // (String) The aggregation methods for event platform queries. Valid values are count, cardinality, median, pc75, pc90, pc95, pc98, pc99, sum, min, max, avg. + // The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (Number) A time interval in milliseconds. + // A time interval in milliseconds. + Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` + + // (String) The measurable attribute to compute. + // The measurable attribute to compute. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` +} + +type ComputeParameters struct { + + // (String) The aggregation methods for event platform queries. Valid values are count, cardinality, median, pc75, pc90, pc95, pc98, pc99, sum, min, max, avg. + // The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`. + // +kubebuilder:validation:Optional + Aggregation *string `json:"aggregation" tf:"aggregation,omitempty"` + + // (Number) A time interval in milliseconds. + // A time interval in milliseconds. + // +kubebuilder:validation:Optional + Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` + + // (String) The measurable attribute to compute. + // The measurable attribute to compute. + // +kubebuilder:validation:Optional + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` +} + +type CustomScheduleInitParameters struct { + + // (Block List, Min: 1, Max: 1) A list of recurrence definitions. Length must be 1. (see below for nested schema) + // A list of recurrence definitions. Length must be 1. + Recurrence []CustomScheduleRecurrenceInitParameters `json:"recurrence,omitempty" tf:"recurrence,omitempty"` +} + +type CustomScheduleObservation struct { + + // (Block List, Min: 1, Max: 1) A list of recurrence definitions. Length must be 1. (see below for nested schema) + // A list of recurrence definitions. Length must be 1. + Recurrence []CustomScheduleRecurrenceObservation `json:"recurrence,omitempty" tf:"recurrence,omitempty"` +} + +type CustomScheduleParameters struct { + + // (Block List, Min: 1, Max: 1) A list of recurrence definitions. Length must be 1. (see below for nested schema) + // A list of recurrence definitions. Length must be 1. + // +kubebuilder:validation:Optional + Recurrence []CustomScheduleRecurrenceParameters `json:"recurrence" tf:"recurrence,omitempty"` +} + +type CustomScheduleRecurrenceInitParameters struct { + + // (String) Must be a valid rrule. See API docs for supported fields + // Must be a valid `rrule`. See API docs for supported fields + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // MM-DDThh:mm:ss' + // Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' + Start *string `json:"start,omitempty" tf:"start,omitempty"` + + // (String) 'tz database' format. Example: America/New_York or UTC + // 'tz database' format. Example: `America/New_York` or `UTC` + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type CustomScheduleRecurrenceObservation struct { + + // (String) Must be a valid rrule. See API docs for supported fields + // Must be a valid `rrule`. See API docs for supported fields + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // MM-DDThh:mm:ss' + // Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' + Start *string `json:"start,omitempty" tf:"start,omitempty"` + + // (String) 'tz database' format. Example: America/New_York or UTC + // 'tz database' format. Example: `America/New_York` or `UTC` + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type CustomScheduleRecurrenceParameters struct { + + // (String) Must be a valid rrule. See API docs for supported fields + // Must be a valid `rrule`. See API docs for supported fields + // +kubebuilder:validation:Optional + Rrule *string `json:"rrule" tf:"rrule,omitempty"` + + // MM-DDThh:mm:ss' + // Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' + // +kubebuilder:validation:Optional + Start *string `json:"start,omitempty" tf:"start,omitempty"` + + // (String) 'tz database' format. Example: America/New_York or UTC + // 'tz database' format. Example: `America/New_York` or `UTC` + // +kubebuilder:validation:Optional + Timezone *string `json:"timezone" tf:"timezone,omitempty"` +} + +type EvaluationWindowInitParameters struct { + + // (String) The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in HH:mm format. + // The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in `HH:mm` format. + DayStarts *string `json:"dayStarts,omitempty" tf:"day_starts,omitempty"` + + // (Number) The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59. + // The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59. + HourStarts *float64 `json:"hourStarts,omitempty" tf:"hour_starts,omitempty"` + + // (Number) The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1. + // The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1. + MonthStarts *float64 `json:"monthStarts,omitempty" tf:"month_starts,omitempty"` +} + +type EvaluationWindowObservation struct { + + // (String) The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in HH:mm format. + // The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in `HH:mm` format. + DayStarts *string `json:"dayStarts,omitempty" tf:"day_starts,omitempty"` + + // (Number) The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59. + // The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59. + HourStarts *float64 `json:"hourStarts,omitempty" tf:"hour_starts,omitempty"` + + // (Number) The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1. + // The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1. + MonthStarts *float64 `json:"monthStarts,omitempty" tf:"month_starts,omitempty"` +} + +type EvaluationWindowParameters struct { + + // (String) The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in HH:mm format. + // The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in `HH:mm` format. + // +kubebuilder:validation:Optional + DayStarts *string `json:"dayStarts,omitempty" tf:"day_starts,omitempty"` + + // (Number) The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59. + // The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59. + // +kubebuilder:validation:Optional + HourStarts *float64 `json:"hourStarts,omitempty" tf:"hour_starts,omitempty"` + + // (Number) The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1. + // The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1. + // +kubebuilder:validation:Optional + MonthStarts *float64 `json:"monthStarts,omitempty" tf:"month_starts,omitempty"` +} + +type EventQueryInitParameters struct { + + // (Block List, Min: 1) The compute options. (see below for nested schema) + // The compute options. + Compute []ComputeInitParameters `json:"compute,omitempty" tf:"compute,omitempty"` + + // based queries. Valid values are rum, ci_pipelines, ci_tests, audit, events, logs, spans, database_queries. + // The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` + + // (Block List) Group by options. (see below for nested schema) + // Group by options. + GroupBy []GroupByInitParameters `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (List of String) An array of index names to query in the stream. + // An array of index names to query in the stream. + Indexes []*string `json:"indexes,omitempty" tf:"indexes,omitempty"` + + // (String) Name of Datadog monitor. + // The name of query for use in formulas. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Min: 1, Max: 1) The search options. (see below for nested schema) + // The search options. + Search []SearchInitParameters `json:"search,omitempty" tf:"search,omitempty"` +} + +type EventQueryObservation struct { + + // (Block List, Min: 1) The compute options. (see below for nested schema) + // The compute options. + Compute []ComputeObservation `json:"compute,omitempty" tf:"compute,omitempty"` + + // based queries. Valid values are rum, ci_pipelines, ci_tests, audit, events, logs, spans, database_queries. + // The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` + + // (Block List) Group by options. (see below for nested schema) + // Group by options. + GroupBy []GroupByObservation `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (List of String) An array of index names to query in the stream. + // An array of index names to query in the stream. + Indexes []*string `json:"indexes,omitempty" tf:"indexes,omitempty"` + + // (String) Name of Datadog monitor. + // The name of query for use in formulas. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Min: 1, Max: 1) The search options. (see below for nested schema) + // The search options. + Search []SearchObservation `json:"search,omitempty" tf:"search,omitempty"` +} + +type EventQueryParameters struct { + + // (Block List, Min: 1) The compute options. (see below for nested schema) + // The compute options. + // +kubebuilder:validation:Optional + Compute []ComputeParameters `json:"compute" tf:"compute,omitempty"` + + // based queries. Valid values are rum, ci_pipelines, ci_tests, audit, events, logs, spans, database_queries. + // The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`. + // +kubebuilder:validation:Optional + DataSource *string `json:"dataSource" tf:"data_source,omitempty"` + + // (Block List) Group by options. (see below for nested schema) + // Group by options. + // +kubebuilder:validation:Optional + GroupBy []GroupByParameters `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (List of String) An array of index names to query in the stream. + // An array of index names to query in the stream. + // +kubebuilder:validation:Optional + Indexes []*string `json:"indexes,omitempty" tf:"indexes,omitempty"` + + // (String) Name of Datadog monitor. + // The name of query for use in formulas. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (Block List, Min: 1, Max: 1) The search options. (see below for nested schema) + // The search options. + // +kubebuilder:validation:Optional + Search []SearchParameters `json:"search" tf:"search,omitempty"` +} + +type GroupByInitParameters struct { + + // (String) The event facet. + // The event facet. + Facet *string `json:"facet,omitempty" tf:"facet,omitempty"` + + // (Number) The number of groups to return. + // The number of groups to return. + Limit *float64 `json:"limit,omitempty" tf:"limit,omitempty"` + + // (Block List, Max: 1) The options for sorting group by results. (see below for nested schema) + // The options for sorting group by results. + Sort []SortInitParameters `json:"sort,omitempty" tf:"sort,omitempty"` +} + +type GroupByObservation struct { + + // (String) The event facet. + // The event facet. + Facet *string `json:"facet,omitempty" tf:"facet,omitempty"` + + // (Number) The number of groups to return. + // The number of groups to return. + Limit *float64 `json:"limit,omitempty" tf:"limit,omitempty"` + + // (Block List, Max: 1) The options for sorting group by results. (see below for nested schema) + // The options for sorting group by results. + Sort []SortObservation `json:"sort,omitempty" tf:"sort,omitempty"` +} + +type GroupByParameters struct { + + // (String) The event facet. + // The event facet. + // +kubebuilder:validation:Optional + Facet *string `json:"facet" tf:"facet,omitempty"` + + // (Number) The number of groups to return. + // The number of groups to return. + // +kubebuilder:validation:Optional + Limit *float64 `json:"limit,omitempty" tf:"limit,omitempty"` + + // (Block List, Max: 1) The options for sorting group by results. (see below for nested schema) + // The options for sorting group by results. + // +kubebuilder:validation:Optional + Sort []SortParameters `json:"sort,omitempty" tf:"sort,omitempty"` +} + +type MonitorInitParameters struct { + + // (Boolean) A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to false. + // A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to `false`. + EnableLogsSample *bool `json:"enableLogsSample,omitempty" tf:"enable_logs_sample,omitempty"` + + // notification. Supports the @username notification allowed elsewhere. + // A message to include with a re-notification. Supports the `@username` notification allowed elsewhere. + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // negative integer. + // (Only applies to metric alert) Time (in seconds) to delay evaluation, as a non-negative integer. + // + // For example, if the value is set to `300` (5min), the `timeframe` is set to `last_5m` and the time is 7:00, the monitor will evaluate data from 6:50 to 6:55. This is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor will always have data during evaluation. + EvaluationDelay *float64 `json:"evaluationDelay,omitempty" tf:"evaluation_delay,omitempty"` + + // (Boolean) A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor). + // A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor). + ForceDelete *bool `json:"forceDelete,omitempty" tf:"force_delete,omitempty"` + + // (String) The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + // The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + GroupRetentionDuration *string `json:"groupRetentionDuration,omitempty" tf:"group_retention_duration,omitempty"` + + // (Boolean) Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to false. + // Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to `false`. + GroupbySimpleMonitor *bool `json:"groupbySimpleMonitor,omitempty" tf:"groupby_simple_monitor,omitempty"` + + // (Boolean) A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to true. + // A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to `true`. + IncludeTags *bool `json:"includeTags,omitempty" tf:"include_tags,omitempty"` + + // (Boolean, Deprecated) A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to false. Deprecated. Use restricted_roles. + // A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to `false`. **Deprecated.** Use `restricted_roles`. + Locked *bool `json:"locked,omitempty" tf:"locked,omitempty"` + + // (String) A message to include with notifications for this monitor. + // A message to include with notifications for this monitor. + // + // Email notifications can be sent to specific users by using the same `@username` notation as events. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Block List, Max: 1) A mapping containing recovery_window and trigger_window values, e.g. last_15m . Can only be used for, and are required for, anomaly monitors. (see below for nested schema) + // A mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m` . Can only be used for, and are required for, anomaly monitors. + MonitorThresholdWindows []MonitorThresholdWindowsInitParameters `json:"monitorThresholdWindows,omitempty" tf:"monitor_threshold_windows,omitempty"` + + // (Block List, Max: 1) Alert thresholds of the monitor. (see below for nested schema) + // Alert thresholds of the monitor. + MonitorThresholds []MonitorThresholdsInitParameters `json:"monitorThresholds,omitempty" tf:"monitor_thresholds,omitempty"` + + // (String) Name of Datadog monitor. + // Name of Datadog monitor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Number) The time (in seconds) to skip evaluations for new groups. + // The time (in seconds) to skip evaluations for new groups. + // + // `new_group_delay` overrides `new_host_delay` if it is set to a nonzero value. + NewGroupDelay *float64 `json:"newGroupDelay,omitempty" tf:"new_group_delay,omitempty"` + + // negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set new_host_delay to zero for monitors grouped by host. Deprecated. Use new_group_delay except when setting new_host_delay to zero. Defaults to 300. + // **Deprecated**. See `new_group_delay`. Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of monitor results. Should be a non-negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set `new_host_delay` to zero for monitors grouped by host. **Deprecated.** Use `new_group_delay` except when setting `new_host_delay` to zero. Defaults to `300`. + NewHostDelay *float64 `json:"newHostDelay,omitempty" tf:"new_host_delay,omitempty"` + + // (Number) The number of minutes before a monitor will notify when data stops reporting. + // The number of minutes before a monitor will notify when data stops reporting. + // + // We recommend at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks. Defaults to `10`. + NoDataTimeframe *float64 `json:"noDataTimeframe,omitempty" tf:"no_data_timeframe,omitempty"` + + // (String) Toggles the display of additional content sent in the monitor notification. Valid values are show_all, hide_query, hide_handles, hide_all. + // Toggles the display of additional content sent in the monitor notification. Valid values are `show_all`, `hide_query`, `hide_handles`, `hide_all`. + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` + + // (Boolean) A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to false. + // A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to `false`. + NotifyAudit *bool `json:"notifyAudit,omitempty" tf:"notify_audit,omitempty"` + + // alert. + // Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert. + // +listType=set + NotifyBy []*string `json:"notifyBy,omitempty" tf:"notify_by,omitempty"` + + // (Boolean) A boolean indicating whether this monitor will notify when data stops reporting. Defaults to false. + // A boolean indicating whether this monitor will notify when data stops reporting. Defaults to `false`. + NotifyNoData *bool `json:"notifyNoData,omitempty" tf:"notify_no_data,omitempty"` + + // (String) Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: show_no_data, show_and_notify_no_data, resolve, and default. + // Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`. + OnMissingData *string `json:"onMissingData,omitempty" tf:"on_missing_data,omitempty"` + + // (Number) Integer from 1 (high) to 5 (low) indicating alert severity. + // Integer from 1 (high) to 5 (low) indicating alert severity. + Priority *float64 `json:"priority,omitempty" tf:"priority,omitempty"` + + // (String) The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the API Reference for details. + // The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) for details. + // + // **Note:** APM latency data is now available as Distribution Metrics. We strongly recommend updating monitor definitions to query the new metrics.datadoghq.com/tracing/guide/ddsketch_trace_metrics/). + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // notify on the current status. It will only re-notify if it's not resolved. + // The number of minutes after the last notification before a monitor will re-notify on the current status. It will only re-notify if it's not resolved. + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + + // notification messages that should be sent on the current status. + // The number of re-notification messages that should be sent on the current status. + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` + + // notification messages should be sent. Valid values are alert, warn, no data. + // The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`. + // +listType=set + RenotifyStatuses []*string `json:"renotifyStatuses,omitempty" tf:"renotify_statuses,omitempty"` + + // (Boolean) A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to false for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, require_full_window must be false and will be ignored. Defaults to true. + // A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to `false` for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, `require_full_window` must be false and will be ignored. Defaults to `true`. + RequireFullWindow *bool `json:"requireFullWindow,omitempty" tf:"require_full_window,omitempty"` + + // (Set of String) A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the Roles API in the data.id field. + // A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) in the `data.id` field. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Block List) Configuration options for scheduling. (see below for nested schema) + // Configuration options for scheduling. + SchedulingOptions []SchedulingOptionsInitParameters `json:"schedulingOptions,omitempty" tf:"scheduling_options,omitempty"` + + // (Set of String) A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Number) The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours. + // The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours. + TimeoutH *float64 `json:"timeoutH,omitempty" tf:"timeout_h,omitempty"` + + // analytics alert, slo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert. + // The type of the monitor. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). Note: The monitor type cannot be changed after a monitor is created. Valid values are `composite`, `event alert`, `log alert`, `metric alert`, `process alert`, `query alert`, `rum alert`, `service check`, `synthetics alert`, `trace-analytics alert`, `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring alert`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Boolean) If set to false, skip the validation call done during plan. + // If set to `false`, skip the validation call done during plan. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Variables []VariablesInitParameters `json:"variables,omitempty" tf:"variables,omitempty"` +} + +type MonitorObservation struct { + + // (Boolean) A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to false. + // A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to `false`. + EnableLogsSample *bool `json:"enableLogsSample,omitempty" tf:"enable_logs_sample,omitempty"` + + // (Boolean) Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors. + // Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors. + EnableSamples *bool `json:"enableSamples,omitempty" tf:"enable_samples,omitempty"` + + // notification. Supports the @username notification allowed elsewhere. + // A message to include with a re-notification. Supports the `@username` notification allowed elsewhere. + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // negative integer. + // (Only applies to metric alert) Time (in seconds) to delay evaluation, as a non-negative integer. + // + // For example, if the value is set to `300` (5min), the `timeframe` is set to `last_5m` and the time is 7:00, the monitor will evaluate data from 6:50 to 6:55. This is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor will always have data during evaluation. + EvaluationDelay *float64 `json:"evaluationDelay,omitempty" tf:"evaluation_delay,omitempty"` + + // (Boolean) A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor). + // A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor). + ForceDelete *bool `json:"forceDelete,omitempty" tf:"force_delete,omitempty"` + + // (String) The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + // The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + GroupRetentionDuration *string `json:"groupRetentionDuration,omitempty" tf:"group_retention_duration,omitempty"` + + // (Boolean) Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to false. + // Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to `false`. + GroupbySimpleMonitor *bool `json:"groupbySimpleMonitor,omitempty" tf:"groupby_simple_monitor,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to true. + // A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to `true`. + IncludeTags *bool `json:"includeTags,omitempty" tf:"include_tags,omitempty"` + + // (Boolean, Deprecated) A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to false. Deprecated. Use restricted_roles. + // A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to `false`. **Deprecated.** Use `restricted_roles`. + Locked *bool `json:"locked,omitempty" tf:"locked,omitempty"` + + // (String) A message to include with notifications for this monitor. + // A message to include with notifications for this monitor. + // + // Email notifications can be sent to specific users by using the same `@username` notation as events. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Block List, Max: 1) A mapping containing recovery_window and trigger_window values, e.g. last_15m . Can only be used for, and are required for, anomaly monitors. (see below for nested schema) + // A mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m` . Can only be used for, and are required for, anomaly monitors. + MonitorThresholdWindows []MonitorThresholdWindowsObservation `json:"monitorThresholdWindows,omitempty" tf:"monitor_threshold_windows,omitempty"` + + // (Block List, Max: 1) Alert thresholds of the monitor. (see below for nested schema) + // Alert thresholds of the monitor. + MonitorThresholds []MonitorThresholdsObservation `json:"monitorThresholds,omitempty" tf:"monitor_thresholds,omitempty"` + + // (String) Name of Datadog monitor. + // Name of Datadog monitor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Number) The time (in seconds) to skip evaluations for new groups. + // The time (in seconds) to skip evaluations for new groups. + // + // `new_group_delay` overrides `new_host_delay` if it is set to a nonzero value. + NewGroupDelay *float64 `json:"newGroupDelay,omitempty" tf:"new_group_delay,omitempty"` + + // negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set new_host_delay to zero for monitors grouped by host. Deprecated. Use new_group_delay except when setting new_host_delay to zero. Defaults to 300. + // **Deprecated**. See `new_group_delay`. Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of monitor results. Should be a non-negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set `new_host_delay` to zero for monitors grouped by host. **Deprecated.** Use `new_group_delay` except when setting `new_host_delay` to zero. Defaults to `300`. + NewHostDelay *float64 `json:"newHostDelay,omitempty" tf:"new_host_delay,omitempty"` + + // (Number) The number of minutes before a monitor will notify when data stops reporting. + // The number of minutes before a monitor will notify when data stops reporting. + // + // We recommend at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks. Defaults to `10`. + NoDataTimeframe *float64 `json:"noDataTimeframe,omitempty" tf:"no_data_timeframe,omitempty"` + + // (String) Toggles the display of additional content sent in the monitor notification. Valid values are show_all, hide_query, hide_handles, hide_all. + // Toggles the display of additional content sent in the monitor notification. Valid values are `show_all`, `hide_query`, `hide_handles`, `hide_all`. + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` + + // (Boolean) A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to false. + // A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to `false`. + NotifyAudit *bool `json:"notifyAudit,omitempty" tf:"notify_audit,omitempty"` + + // alert. + // Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert. + // +listType=set + NotifyBy []*string `json:"notifyBy,omitempty" tf:"notify_by,omitempty"` + + // (Boolean) A boolean indicating whether this monitor will notify when data stops reporting. Defaults to false. + // A boolean indicating whether this monitor will notify when data stops reporting. Defaults to `false`. + NotifyNoData *bool `json:"notifyNoData,omitempty" tf:"notify_no_data,omitempty"` + + // (String) Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: show_no_data, show_and_notify_no_data, resolve, and default. + // Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`. + OnMissingData *string `json:"onMissingData,omitempty" tf:"on_missing_data,omitempty"` + + // (Number) Integer from 1 (high) to 5 (low) indicating alert severity. + // Integer from 1 (high) to 5 (low) indicating alert severity. + Priority *float64 `json:"priority,omitempty" tf:"priority,omitempty"` + + // (String) The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the API Reference for details. + // The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) for details. + // + // **Note:** APM latency data is now available as Distribution Metrics. We strongly recommend updating monitor definitions to query the new metrics.datadoghq.com/tracing/guide/ddsketch_trace_metrics/). + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // notify on the current status. It will only re-notify if it's not resolved. + // The number of minutes after the last notification before a monitor will re-notify on the current status. It will only re-notify if it's not resolved. + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + + // notification messages that should be sent on the current status. + // The number of re-notification messages that should be sent on the current status. + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` + + // notification messages should be sent. Valid values are alert, warn, no data. + // The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`. + // +listType=set + RenotifyStatuses []*string `json:"renotifyStatuses,omitempty" tf:"renotify_statuses,omitempty"` + + // (Boolean) A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to false for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, require_full_window must be false and will be ignored. Defaults to true. + // A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to `false` for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, `require_full_window` must be false and will be ignored. Defaults to `true`. + RequireFullWindow *bool `json:"requireFullWindow,omitempty" tf:"require_full_window,omitempty"` + + // (Set of String) A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the Roles API in the data.id field. + // A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) in the `data.id` field. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Block List) Configuration options for scheduling. (see below for nested schema) + // Configuration options for scheduling. + SchedulingOptions []SchedulingOptionsObservation `json:"schedulingOptions,omitempty" tf:"scheduling_options,omitempty"` + + // (Set of String) A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Number) The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours. + // The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours. + TimeoutH *float64 `json:"timeoutH,omitempty" tf:"timeout_h,omitempty"` + + // analytics alert, slo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert. + // The type of the monitor. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). Note: The monitor type cannot be changed after a monitor is created. Valid values are `composite`, `event alert`, `log alert`, `metric alert`, `process alert`, `query alert`, `rum alert`, `service check`, `synthetics alert`, `trace-analytics alert`, `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring alert`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Boolean) If set to false, skip the validation call done during plan. + // If set to `false`, skip the validation call done during plan. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Variables []VariablesObservation `json:"variables,omitempty" tf:"variables,omitempty"` +} + +type MonitorParameters struct { + + // (Boolean) A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to false. + // A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to `false`. + // +kubebuilder:validation:Optional + EnableLogsSample *bool `json:"enableLogsSample,omitempty" tf:"enable_logs_sample,omitempty"` + + // notification. Supports the @username notification allowed elsewhere. + // A message to include with a re-notification. Supports the `@username` notification allowed elsewhere. + // +kubebuilder:validation:Optional + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // negative integer. + // (Only applies to metric alert) Time (in seconds) to delay evaluation, as a non-negative integer. + // + // For example, if the value is set to `300` (5min), the `timeframe` is set to `last_5m` and the time is 7:00, the monitor will evaluate data from 6:50 to 6:55. This is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor will always have data during evaluation. + // +kubebuilder:validation:Optional + EvaluationDelay *float64 `json:"evaluationDelay,omitempty" tf:"evaluation_delay,omitempty"` + + // (Boolean) A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor). + // A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor). + // +kubebuilder:validation:Optional + ForceDelete *bool `json:"forceDelete,omitempty" tf:"force_delete,omitempty"` + + // (String) The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + // The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + // +kubebuilder:validation:Optional + GroupRetentionDuration *string `json:"groupRetentionDuration,omitempty" tf:"group_retention_duration,omitempty"` + + // (Boolean) Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to false. + // Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to `false`. + // +kubebuilder:validation:Optional + GroupbySimpleMonitor *bool `json:"groupbySimpleMonitor,omitempty" tf:"groupby_simple_monitor,omitempty"` + + // (Boolean) A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to true. + // A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to `true`. + // +kubebuilder:validation:Optional + IncludeTags *bool `json:"includeTags,omitempty" tf:"include_tags,omitempty"` + + // (Boolean, Deprecated) A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to false. Deprecated. Use restricted_roles. + // A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to `false`. **Deprecated.** Use `restricted_roles`. + // +kubebuilder:validation:Optional + Locked *bool `json:"locked,omitempty" tf:"locked,omitempty"` + + // (String) A message to include with notifications for this monitor. + // A message to include with notifications for this monitor. + // + // Email notifications can be sent to specific users by using the same `@username` notation as events. + // +kubebuilder:validation:Optional + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Block List, Max: 1) A mapping containing recovery_window and trigger_window values, e.g. last_15m . Can only be used for, and are required for, anomaly monitors. (see below for nested schema) + // A mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m` . Can only be used for, and are required for, anomaly monitors. + // +kubebuilder:validation:Optional + MonitorThresholdWindows []MonitorThresholdWindowsParameters `json:"monitorThresholdWindows,omitempty" tf:"monitor_threshold_windows,omitempty"` + + // (Block List, Max: 1) Alert thresholds of the monitor. (see below for nested schema) + // Alert thresholds of the monitor. + // +kubebuilder:validation:Optional + MonitorThresholds []MonitorThresholdsParameters `json:"monitorThresholds,omitempty" tf:"monitor_thresholds,omitempty"` + + // (String) Name of Datadog monitor. + // Name of Datadog monitor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Number) The time (in seconds) to skip evaluations for new groups. + // The time (in seconds) to skip evaluations for new groups. + // + // `new_group_delay` overrides `new_host_delay` if it is set to a nonzero value. + // +kubebuilder:validation:Optional + NewGroupDelay *float64 `json:"newGroupDelay,omitempty" tf:"new_group_delay,omitempty"` + + // negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set new_host_delay to zero for monitors grouped by host. Deprecated. Use new_group_delay except when setting new_host_delay to zero. Defaults to 300. + // **Deprecated**. See `new_group_delay`. Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of monitor results. Should be a non-negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set `new_host_delay` to zero for monitors grouped by host. **Deprecated.** Use `new_group_delay` except when setting `new_host_delay` to zero. Defaults to `300`. + // +kubebuilder:validation:Optional + NewHostDelay *float64 `json:"newHostDelay,omitempty" tf:"new_host_delay,omitempty"` + + // (Number) The number of minutes before a monitor will notify when data stops reporting. + // The number of minutes before a monitor will notify when data stops reporting. + // + // We recommend at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks. Defaults to `10`. + // +kubebuilder:validation:Optional + NoDataTimeframe *float64 `json:"noDataTimeframe,omitempty" tf:"no_data_timeframe,omitempty"` + + // (String) Toggles the display of additional content sent in the monitor notification. Valid values are show_all, hide_query, hide_handles, hide_all. + // Toggles the display of additional content sent in the monitor notification. Valid values are `show_all`, `hide_query`, `hide_handles`, `hide_all`. + // +kubebuilder:validation:Optional + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` + + // (Boolean) A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to false. + // A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to `false`. + // +kubebuilder:validation:Optional + NotifyAudit *bool `json:"notifyAudit,omitempty" tf:"notify_audit,omitempty"` + + // alert. + // Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert. + // +kubebuilder:validation:Optional + // +listType=set + NotifyBy []*string `json:"notifyBy,omitempty" tf:"notify_by,omitempty"` + + // (Boolean) A boolean indicating whether this monitor will notify when data stops reporting. Defaults to false. + // A boolean indicating whether this monitor will notify when data stops reporting. Defaults to `false`. + // +kubebuilder:validation:Optional + NotifyNoData *bool `json:"notifyNoData,omitempty" tf:"notify_no_data,omitempty"` + + // (String) Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: show_no_data, show_and_notify_no_data, resolve, and default. + // Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`. + // +kubebuilder:validation:Optional + OnMissingData *string `json:"onMissingData,omitempty" tf:"on_missing_data,omitempty"` + + // (Number) Integer from 1 (high) to 5 (low) indicating alert severity. + // Integer from 1 (high) to 5 (low) indicating alert severity. + // +kubebuilder:validation:Optional + Priority *float64 `json:"priority,omitempty" tf:"priority,omitempty"` + + // (String) The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the API Reference for details. + // The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) for details. + // + // **Note:** APM latency data is now available as Distribution Metrics. We strongly recommend updating monitor definitions to query the new metrics.datadoghq.com/tracing/guide/ddsketch_trace_metrics/). + // +kubebuilder:validation:Optional + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // notify on the current status. It will only re-notify if it's not resolved. + // The number of minutes after the last notification before a monitor will re-notify on the current status. It will only re-notify if it's not resolved. + // +kubebuilder:validation:Optional + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + + // notification messages that should be sent on the current status. + // The number of re-notification messages that should be sent on the current status. + // +kubebuilder:validation:Optional + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` + + // notification messages should be sent. Valid values are alert, warn, no data. + // The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`. + // +kubebuilder:validation:Optional + // +listType=set + RenotifyStatuses []*string `json:"renotifyStatuses,omitempty" tf:"renotify_statuses,omitempty"` + + // (Boolean) A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to false for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, require_full_window must be false and will be ignored. Defaults to true. + // A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to `false` for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, `require_full_window` must be false and will be ignored. Defaults to `true`. + // +kubebuilder:validation:Optional + RequireFullWindow *bool `json:"requireFullWindow,omitempty" tf:"require_full_window,omitempty"` + + // (Set of String) A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the Roles API in the data.id field. + // A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) in the `data.id` field. + // +kubebuilder:validation:Optional + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Block List) Configuration options for scheduling. (see below for nested schema) + // Configuration options for scheduling. + // +kubebuilder:validation:Optional + SchedulingOptions []SchedulingOptionsParameters `json:"schedulingOptions,omitempty" tf:"scheduling_options,omitempty"` + + // (Set of String) A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Number) The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours. + // The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours. + // +kubebuilder:validation:Optional + TimeoutH *float64 `json:"timeoutH,omitempty" tf:"timeout_h,omitempty"` + + // analytics alert, slo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert. + // The type of the monitor. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). Note: The monitor type cannot be changed after a monitor is created. Valid values are `composite`, `event alert`, `log alert`, `metric alert`, `process alert`, `query alert`, `rum alert`, `service check`, `synthetics alert`, `trace-analytics alert`, `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring alert`. + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Boolean) If set to false, skip the validation call done during plan. + // If set to `false`, skip the validation call done during plan. + // +kubebuilder:validation:Optional + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Variables []VariablesParameters `json:"variables,omitempty" tf:"variables,omitempty"` +} + +type MonitorThresholdWindowsInitParameters struct { + + // (String) Describes how long an anomalous metric must be normal before the alert recovers. + // Describes how long an anomalous metric must be normal before the alert recovers. + RecoveryWindow *string `json:"recoveryWindow,omitempty" tf:"recovery_window,omitempty"` + + // (String) Describes how long a metric must be anomalous before an alert triggers. + // Describes how long a metric must be anomalous before an alert triggers. + TriggerWindow *string `json:"triggerWindow,omitempty" tf:"trigger_window,omitempty"` +} + +type MonitorThresholdWindowsObservation struct { + + // (String) Describes how long an anomalous metric must be normal before the alert recovers. + // Describes how long an anomalous metric must be normal before the alert recovers. + RecoveryWindow *string `json:"recoveryWindow,omitempty" tf:"recovery_window,omitempty"` + + // (String) Describes how long a metric must be anomalous before an alert triggers. + // Describes how long a metric must be anomalous before an alert triggers. + TriggerWindow *string `json:"triggerWindow,omitempty" tf:"trigger_window,omitempty"` +} + +type MonitorThresholdWindowsParameters struct { + + // (String) Describes how long an anomalous metric must be normal before the alert recovers. + // Describes how long an anomalous metric must be normal before the alert recovers. + // +kubebuilder:validation:Optional + RecoveryWindow *string `json:"recoveryWindow,omitempty" tf:"recovery_window,omitempty"` + + // (String) Describes how long a metric must be anomalous before an alert triggers. + // Describes how long a metric must be anomalous before an alert triggers. + // +kubebuilder:validation:Optional + TriggerWindow *string `json:"triggerWindow,omitempty" tf:"trigger_window,omitempty"` +} + +type MonitorThresholdsInitParameters struct { + + // (String) The monitor CRITICAL threshold. Must be a number. + // The monitor `CRITICAL` threshold. Must be a number. + Critical *string `json:"critical,omitempty" tf:"critical,omitempty"` + + // (String) The monitor CRITICAL recovery threshold. Must be a number. + // The monitor `CRITICAL` recovery threshold. Must be a number. + CriticalRecovery *string `json:"criticalRecovery,omitempty" tf:"critical_recovery,omitempty"` + + // (String) The monitor OK threshold. Only supported in monitor type service check. Must be a number. + // The monitor `OK` threshold. Only supported in monitor type `service check`. Must be a number. + Ok *string `json:"ok,omitempty" tf:"ok,omitempty"` + + // (String) The monitor UNKNOWN threshold. Only supported in monitor type service check. Must be a number. + // The monitor `UNKNOWN` threshold. Only supported in monitor type `service check`. Must be a number. + Unknown *string `json:"unknown,omitempty" tf:"unknown,omitempty"` + + // (String) The monitor WARNING threshold. Must be a number. + // The monitor `WARNING` threshold. Must be a number. + Warning *string `json:"warning,omitempty" tf:"warning,omitempty"` + + // (String) The monitor WARNING recovery threshold. Must be a number. + // The monitor `WARNING` recovery threshold. Must be a number. + WarningRecovery *string `json:"warningRecovery,omitempty" tf:"warning_recovery,omitempty"` +} + +type MonitorThresholdsObservation struct { + + // (String) The monitor CRITICAL threshold. Must be a number. + // The monitor `CRITICAL` threshold. Must be a number. + Critical *string `json:"critical,omitempty" tf:"critical,omitempty"` + + // (String) The monitor CRITICAL recovery threshold. Must be a number. + // The monitor `CRITICAL` recovery threshold. Must be a number. + CriticalRecovery *string `json:"criticalRecovery,omitempty" tf:"critical_recovery,omitempty"` + + // (String) The monitor OK threshold. Only supported in monitor type service check. Must be a number. + // The monitor `OK` threshold. Only supported in monitor type `service check`. Must be a number. + Ok *string `json:"ok,omitempty" tf:"ok,omitempty"` + + // (String) The monitor UNKNOWN threshold. Only supported in monitor type service check. Must be a number. + // The monitor `UNKNOWN` threshold. Only supported in monitor type `service check`. Must be a number. + Unknown *string `json:"unknown,omitempty" tf:"unknown,omitempty"` + + // (String) The monitor WARNING threshold. Must be a number. + // The monitor `WARNING` threshold. Must be a number. + Warning *string `json:"warning,omitempty" tf:"warning,omitempty"` + + // (String) The monitor WARNING recovery threshold. Must be a number. + // The monitor `WARNING` recovery threshold. Must be a number. + WarningRecovery *string `json:"warningRecovery,omitempty" tf:"warning_recovery,omitempty"` +} + +type MonitorThresholdsParameters struct { + + // (String) The monitor CRITICAL threshold. Must be a number. + // The monitor `CRITICAL` threshold. Must be a number. + // +kubebuilder:validation:Optional + Critical *string `json:"critical,omitempty" tf:"critical,omitempty"` + + // (String) The monitor CRITICAL recovery threshold. Must be a number. + // The monitor `CRITICAL` recovery threshold. Must be a number. + // +kubebuilder:validation:Optional + CriticalRecovery *string `json:"criticalRecovery,omitempty" tf:"critical_recovery,omitempty"` + + // (String) The monitor OK threshold. Only supported in monitor type service check. Must be a number. + // The monitor `OK` threshold. Only supported in monitor type `service check`. Must be a number. + // +kubebuilder:validation:Optional + Ok *string `json:"ok,omitempty" tf:"ok,omitempty"` + + // (String) The monitor UNKNOWN threshold. Only supported in monitor type service check. Must be a number. + // The monitor `UNKNOWN` threshold. Only supported in monitor type `service check`. Must be a number. + // +kubebuilder:validation:Optional + Unknown *string `json:"unknown,omitempty" tf:"unknown,omitempty"` + + // (String) The monitor WARNING threshold. Must be a number. + // The monitor `WARNING` threshold. Must be a number. + // +kubebuilder:validation:Optional + Warning *string `json:"warning,omitempty" tf:"warning,omitempty"` + + // (String) The monitor WARNING recovery threshold. Must be a number. + // The monitor `WARNING` recovery threshold. Must be a number. + // +kubebuilder:validation:Optional + WarningRecovery *string `json:"warningRecovery,omitempty" tf:"warning_recovery,omitempty"` +} + +type SchedulingOptionsInitParameters struct { + + // (Block List) Configuration options for the custom schedules. If start is omitted, the monitor creation time will be used. (see below for nested schema) + // Configuration options for the custom schedules. If `start` is omitted, the monitor creation time will be used. + CustomSchedule []CustomScheduleInitParameters `json:"customSchedule,omitempty" tf:"custom_schedule,omitempty"` + + // (Block List) Configuration options for the evaluation window. If hour_starts is set, no other fields may be set. Otherwise, day_starts and month_starts must be set together. (see below for nested schema) + // Configuration options for the evaluation window. If `hour_starts` is set, no other fields may be set. Otherwise, `day_starts` and `month_starts` must be set together. + EvaluationWindow []EvaluationWindowInitParameters `json:"evaluationWindow,omitempty" tf:"evaluation_window,omitempty"` +} + +type SchedulingOptionsObservation struct { + + // (Block List) Configuration options for the custom schedules. If start is omitted, the monitor creation time will be used. (see below for nested schema) + // Configuration options for the custom schedules. If `start` is omitted, the monitor creation time will be used. + CustomSchedule []CustomScheduleObservation `json:"customSchedule,omitempty" tf:"custom_schedule,omitempty"` + + // (Block List) Configuration options for the evaluation window. If hour_starts is set, no other fields may be set. Otherwise, day_starts and month_starts must be set together. (see below for nested schema) + // Configuration options for the evaluation window. If `hour_starts` is set, no other fields may be set. Otherwise, `day_starts` and `month_starts` must be set together. + EvaluationWindow []EvaluationWindowObservation `json:"evaluationWindow,omitempty" tf:"evaluation_window,omitempty"` +} + +type SchedulingOptionsParameters struct { + + // (Block List) Configuration options for the custom schedules. If start is omitted, the monitor creation time will be used. (see below for nested schema) + // Configuration options for the custom schedules. If `start` is omitted, the monitor creation time will be used. + // +kubebuilder:validation:Optional + CustomSchedule []CustomScheduleParameters `json:"customSchedule,omitempty" tf:"custom_schedule,omitempty"` + + // (Block List) Configuration options for the evaluation window. If hour_starts is set, no other fields may be set. Otherwise, day_starts and month_starts must be set together. (see below for nested schema) + // Configuration options for the evaluation window. If `hour_starts` is set, no other fields may be set. Otherwise, `day_starts` and `month_starts` must be set together. + // +kubebuilder:validation:Optional + EvaluationWindow []EvaluationWindowParameters `json:"evaluationWindow,omitempty" tf:"evaluation_window,omitempty"` +} + +type SearchInitParameters struct { + + // (String) The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the API Reference for details. + // The events search string. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type SearchObservation struct { + + // (String) The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the API Reference for details. + // The events search string. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type SearchParameters struct { + + // (String) The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the API Reference for details. + // The events search string. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type SortInitParameters struct { + + // (String) The aggregation methods for event platform queries. Valid values are count, cardinality, median, pc75, pc90, pc95, pc98, pc99, sum, min, max, avg. + // The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (String) The measurable attribute to compute. + // The metric used for sorting group by results. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (String) Direction of sort. Valid values are asc, desc. + // Direction of sort. Valid values are `asc`, `desc`. + Order *string `json:"order,omitempty" tf:"order,omitempty"` +} + +type SortObservation struct { + + // (String) The aggregation methods for event platform queries. Valid values are count, cardinality, median, pc75, pc90, pc95, pc98, pc99, sum, min, max, avg. + // The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (String) The measurable attribute to compute. + // The metric used for sorting group by results. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (String) Direction of sort. Valid values are asc, desc. + // Direction of sort. Valid values are `asc`, `desc`. + Order *string `json:"order,omitempty" tf:"order,omitempty"` +} + +type SortParameters struct { + + // (String) The aggregation methods for event platform queries. Valid values are count, cardinality, median, pc75, pc90, pc95, pc98, pc99, sum, min, max, avg. + // The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`. + // +kubebuilder:validation:Optional + Aggregation *string `json:"aggregation" tf:"aggregation,omitempty"` + + // (String) The measurable attribute to compute. + // The metric used for sorting group by results. + // +kubebuilder:validation:Optional + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (String) Direction of sort. Valid values are asc, desc. + // Direction of sort. Valid values are `asc`, `desc`. + // +kubebuilder:validation:Optional + Order *string `json:"order,omitempty" tf:"order,omitempty"` +} + +type VariablesInitParameters struct { + + // (Block List) A timeseries formula and functions events query. (see below for nested schema) + // A timeseries formula and functions events query. + EventQuery []EventQueryInitParameters `json:"eventQuery,omitempty" tf:"event_query,omitempty"` +} + +type VariablesObservation struct { + + // (Block List) A timeseries formula and functions events query. (see below for nested schema) + // A timeseries formula and functions events query. + EventQuery []EventQueryObservation `json:"eventQuery,omitempty" tf:"event_query,omitempty"` +} + +type VariablesParameters struct { + + // (Block List) A timeseries formula and functions events query. (see below for nested schema) + // A timeseries formula and functions events query. + // +kubebuilder:validation:Optional + EventQuery []EventQueryParameters `json:"eventQuery,omitempty" tf:"event_query,omitempty"` +} + +// MonitorSpec defines the desired state of Monitor +type MonitorSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider MonitorParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider MonitorInitParameters `json:"initProvider,omitempty"` +} + +// MonitorStatus defines the observed state of Monitor. +type MonitorStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider MonitorObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Monitor is the Schema for the Monitors API. Provides a Datadog monitor resource. This can be used to create and manage Datadog monitors. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Monitor struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.message) || (has(self.initProvider) && has(self.initProvider.message))",message="spec.forProvider.message is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.query) || (has(self.initProvider) && has(self.initProvider.query))",message="spec.forProvider.query is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.type) || (has(self.initProvider) && has(self.initProvider.type))",message="spec.forProvider.type is a required parameter" + Spec MonitorSpec `json:"spec"` + Status MonitorStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// MonitorList contains a list of Monitors +type MonitorList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Monitor `json:"items"` +} + +// Repository type metadata. +var ( + Monitor_Kind = "Monitor" + Monitor_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Monitor_Kind}.String() + Monitor_KindAPIVersion = Monitor_Kind + "." + CRDGroupVersion.String() + Monitor_GroupVersionKind = CRDGroupVersion.WithKind(Monitor_Kind) +) + +func init() { + SchemeBuilder.Register(&Monitor{}, &MonitorList{}) +} diff --git a/apis/datadog/v1alpha1/zz_monitorconfigpolicy_terraformed.go b/apis/datadog/v1alpha1/zz_monitorconfigpolicy_terraformed.go new file mode 100755 index 0000000..5b205b3 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_monitorconfigpolicy_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this MonitorConfigPolicy +func (mg *MonitorConfigPolicy) GetTerraformResourceType() string { + return "datadog_monitor_config_policy" +} + +// GetConnectionDetailsMapping for this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this MonitorConfigPolicy +func (tr *MonitorConfigPolicy) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this MonitorConfigPolicy using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *MonitorConfigPolicy) LateInitialize(attrs []byte) (bool, error) { + params := &MonitorConfigPolicyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *MonitorConfigPolicy) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_monitorconfigpolicy_types.go b/apis/datadog/v1alpha1/zz_monitorconfigpolicy_types.go new file mode 100755 index 0000000..8de47bb --- /dev/null +++ b/apis/datadog/v1alpha1/zz_monitorconfigpolicy_types.go @@ -0,0 +1,166 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type MonitorConfigPolicyInitParameters struct { + + // (String) The monitor config policy type Valid values are tag. + // The monitor config policy type Valid values are `tag`. + PolicyType *string `json:"policyType,omitempty" tf:"policy_type,omitempty"` + + // (Block List, Max: 1) Config for a tag policy. Only set if policy_type is tag. (see below for nested schema) + // Config for a tag policy. Only set if `policy_type` is `tag`. + TagPolicy []TagPolicyInitParameters `json:"tagPolicy,omitempty" tf:"tag_policy,omitempty"` +} + +type MonitorConfigPolicyObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The monitor config policy type Valid values are tag. + // The monitor config policy type Valid values are `tag`. + PolicyType *string `json:"policyType,omitempty" tf:"policy_type,omitempty"` + + // (Block List, Max: 1) Config for a tag policy. Only set if policy_type is tag. (see below for nested schema) + // Config for a tag policy. Only set if `policy_type` is `tag`. + TagPolicy []TagPolicyObservation `json:"tagPolicy,omitempty" tf:"tag_policy,omitempty"` +} + +type MonitorConfigPolicyParameters struct { + + // (String) The monitor config policy type Valid values are tag. + // The monitor config policy type Valid values are `tag`. + // +kubebuilder:validation:Optional + PolicyType *string `json:"policyType,omitempty" tf:"policy_type,omitempty"` + + // (Block List, Max: 1) Config for a tag policy. Only set if policy_type is tag. (see below for nested schema) + // Config for a tag policy. Only set if `policy_type` is `tag`. + // +kubebuilder:validation:Optional + TagPolicy []TagPolicyParameters `json:"tagPolicy,omitempty" tf:"tag_policy,omitempty"` +} + +type TagPolicyInitParameters struct { + + // (String) The key of the tag + // The key of the tag + TagKey *string `json:"tagKey,omitempty" tf:"tag_key,omitempty"` + + // (Boolean) If a tag key is required for monitor creation + // If a tag key is required for monitor creation + TagKeyRequired *bool `json:"tagKeyRequired,omitempty" tf:"tag_key_required,omitempty"` + + // (List of String) Valid values for the tag + // Valid values for the tag + ValidTagValues []*string `json:"validTagValues,omitempty" tf:"valid_tag_values,omitempty"` +} + +type TagPolicyObservation struct { + + // (String) The key of the tag + // The key of the tag + TagKey *string `json:"tagKey,omitempty" tf:"tag_key,omitempty"` + + // (Boolean) If a tag key is required for monitor creation + // If a tag key is required for monitor creation + TagKeyRequired *bool `json:"tagKeyRequired,omitempty" tf:"tag_key_required,omitempty"` + + // (List of String) Valid values for the tag + // Valid values for the tag + ValidTagValues []*string `json:"validTagValues,omitempty" tf:"valid_tag_values,omitempty"` +} + +type TagPolicyParameters struct { + + // (String) The key of the tag + // The key of the tag + // +kubebuilder:validation:Optional + TagKey *string `json:"tagKey" tf:"tag_key,omitempty"` + + // (Boolean) If a tag key is required for monitor creation + // If a tag key is required for monitor creation + // +kubebuilder:validation:Optional + TagKeyRequired *bool `json:"tagKeyRequired" tf:"tag_key_required,omitempty"` + + // (List of String) Valid values for the tag + // Valid values for the tag + // +kubebuilder:validation:Optional + ValidTagValues []*string `json:"validTagValues" tf:"valid_tag_values,omitempty"` +} + +// MonitorConfigPolicySpec defines the desired state of MonitorConfigPolicy +type MonitorConfigPolicySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider MonitorConfigPolicyParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider MonitorConfigPolicyInitParameters `json:"initProvider,omitempty"` +} + +// MonitorConfigPolicyStatus defines the observed state of MonitorConfigPolicy. +type MonitorConfigPolicyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider MonitorConfigPolicyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// MonitorConfigPolicy is the Schema for the MonitorConfigPolicys API. Provides a Datadog monitor config policy resource. This can be used to create and manage Datadog monitor config policies. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type MonitorConfigPolicy struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.policyType) || (has(self.initProvider) && has(self.initProvider.policyType))",message="spec.forProvider.policyType is a required parameter" + Spec MonitorConfigPolicySpec `json:"spec"` + Status MonitorConfigPolicyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// MonitorConfigPolicyList contains a list of MonitorConfigPolicys +type MonitorConfigPolicyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []MonitorConfigPolicy `json:"items"` +} + +// Repository type metadata. +var ( + MonitorConfigPolicy_Kind = "MonitorConfigPolicy" + MonitorConfigPolicy_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: MonitorConfigPolicy_Kind}.String() + MonitorConfigPolicy_KindAPIVersion = MonitorConfigPolicy_Kind + "." + CRDGroupVersion.String() + MonitorConfigPolicy_GroupVersionKind = CRDGroupVersion.WithKind(MonitorConfigPolicy_Kind) +) + +func init() { + SchemeBuilder.Register(&MonitorConfigPolicy{}, &MonitorConfigPolicyList{}) +} diff --git a/apis/datadog/v1alpha1/zz_monitorjson_terraformed.go b/apis/datadog/v1alpha1/zz_monitorjson_terraformed.go new file mode 100755 index 0000000..ffbb055 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_monitorjson_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this MonitorJSON +func (mg *MonitorJSON) GetTerraformResourceType() string { + return "datadog_monitor_json" +} + +// GetConnectionDetailsMapping for this MonitorJSON +func (tr *MonitorJSON) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this MonitorJSON +func (tr *MonitorJSON) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this MonitorJSON +func (tr *MonitorJSON) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this MonitorJSON +func (tr *MonitorJSON) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this MonitorJSON +func (tr *MonitorJSON) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this MonitorJSON +func (tr *MonitorJSON) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this MonitorJSON +func (tr *MonitorJSON) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this MonitorJSON +func (tr *MonitorJSON) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this MonitorJSON using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *MonitorJSON) LateInitialize(attrs []byte) (bool, error) { + params := &MonitorJSONParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *MonitorJSON) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_monitorjson_types.go b/apis/datadog/v1alpha1/zz_monitorjson_types.go new file mode 100755 index 0000000..742e4f6 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_monitorjson_types.go @@ -0,0 +1,118 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type MonitorJSONInitParameters struct { + + // (String) The JSON formatted definition of the monitor. + // The JSON formatted definition of the monitor. + Monitor *string `json:"monitor,omitempty" tf:"monitor,omitempty"` + + // (String) The URL of the monitor. + // The URL of the monitor. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type MonitorJSONObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The JSON formatted definition of the monitor. + // The JSON formatted definition of the monitor. + Monitor *string `json:"monitor,omitempty" tf:"monitor,omitempty"` + + // (String) The URL of the monitor. + // The URL of the monitor. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type MonitorJSONParameters struct { + + // (String) The JSON formatted definition of the monitor. + // The JSON formatted definition of the monitor. + // +kubebuilder:validation:Optional + Monitor *string `json:"monitor,omitempty" tf:"monitor,omitempty"` + + // (String) The URL of the monitor. + // The URL of the monitor. + // +kubebuilder:validation:Optional + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +// MonitorJSONSpec defines the desired state of MonitorJSON +type MonitorJSONSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider MonitorJSONParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider MonitorJSONInitParameters `json:"initProvider,omitempty"` +} + +// MonitorJSONStatus defines the observed state of MonitorJSON. +type MonitorJSONStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider MonitorJSONObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// MonitorJSON is the Schema for the MonitorJSONs API. Provides a Datadog monitor JSON resource. This can be used to create and manage Datadog monitors using the JSON definition. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type MonitorJSON struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.monitor) || (has(self.initProvider) && has(self.initProvider.monitor))",message="spec.forProvider.monitor is a required parameter" + Spec MonitorJSONSpec `json:"spec"` + Status MonitorJSONStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// MonitorJSONList contains a list of MonitorJSONs +type MonitorJSONList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []MonitorJSON `json:"items"` +} + +// Repository type metadata. +var ( + MonitorJSON_Kind = "MonitorJSON" + MonitorJSON_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: MonitorJSON_Kind}.String() + MonitorJSON_KindAPIVersion = MonitorJSON_Kind + "." + CRDGroupVersion.String() + MonitorJSON_GroupVersionKind = CRDGroupVersion.WithKind(MonitorJSON_Kind) +) + +func init() { + SchemeBuilder.Register(&MonitorJSON{}, &MonitorJSONList{}) +} diff --git a/apis/datadog/v1alpha1/zz_organizationsettings_terraformed.go b/apis/datadog/v1alpha1/zz_organizationsettings_terraformed.go new file mode 100755 index 0000000..a2961ae --- /dev/null +++ b/apis/datadog/v1alpha1/zz_organizationsettings_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this OrganizationSettings +func (mg *OrganizationSettings) GetTerraformResourceType() string { + return "datadog_organization_settings" +} + +// GetConnectionDetailsMapping for this OrganizationSettings +func (tr *OrganizationSettings) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this OrganizationSettings +func (tr *OrganizationSettings) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this OrganizationSettings +func (tr *OrganizationSettings) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this OrganizationSettings +func (tr *OrganizationSettings) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this OrganizationSettings +func (tr *OrganizationSettings) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this OrganizationSettings +func (tr *OrganizationSettings) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this OrganizationSettings +func (tr *OrganizationSettings) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this OrganizationSettings +func (tr *OrganizationSettings) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this OrganizationSettings using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *OrganizationSettings) LateInitialize(attrs []byte) (bool, error) { + params := &OrganizationSettingsParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *OrganizationSettings) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_organizationsettings_types.go b/apis/datadog/v1alpha1/zz_organizationsettings_types.go new file mode 100755 index 0000000..336fb5c --- /dev/null +++ b/apis/datadog/v1alpha1/zz_organizationsettings_types.go @@ -0,0 +1,329 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type OrganizationSettingsInitParameters struct { + + // (String) Name for Organization. + // Name for Organization. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Organization settings (see below for nested schema) + // Organization settings + Settings []OrganizationSettingsSettingsInitParameters `json:"settings,omitempty" tf:"settings,omitempty"` +} + +type OrganizationSettingsObservation struct { + + // (String) Description of the organization. + // Description of the organization. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name for Organization. + // Name for Organization. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The public_id of the organization you are operating within. + // The `public_id` of the organization you are operating within. + PublicID *string `json:"publicId,omitempty" tf:"public_id,omitempty"` + + // (Block List, Max: 1) Organization settings (see below for nested schema) + // Organization settings + Settings []OrganizationSettingsSettingsObservation `json:"settings,omitempty" tf:"settings,omitempty"` +} + +type OrganizationSettingsParameters struct { + + // (String) Name for Organization. + // Name for Organization. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Organization settings (see below for nested schema) + // Organization settings + // +kubebuilder:validation:Optional + Settings []OrganizationSettingsSettingsParameters `json:"settings,omitempty" tf:"settings,omitempty"` +} + +type OrganizationSettingsSettingsInitParameters struct { + + // (Boolean) Whether or not the organization users can share widgets outside of Datadog. Defaults to false. + // Whether or not the organization users can share widgets outside of Datadog. Defaults to `false`. + PrivateWidgetShare *bool `json:"privateWidgetShare,omitempty" tf:"private_widget_share,omitempty"` + + // (Block List, Min: 1, Max: 1) SAML properties (see below for nested schema) + // SAML properties + SAML []SettingsSAMLInitParameters `json:"saml,omitempty" tf:"saml,omitempty"` + + // only user). Allowed enum values: st, adm , ro, ERROR Defaults to "st". + // The access role of the user. Options are `st` (standard user), `adm` (admin user), or `ro` (read-only user). Allowed enum values: `st`, `adm` , `ro`, `ERROR` Defaults to `"st"`. + SAMLAutocreateAccessRole *string `json:"samlAutocreateAccessRole,omitempty" tf:"saml_autocreate_access_role,omitempty"` + + // (Block List, Min: 1, Max: 1) List of domains where the SAML automated user creation is enabled. (see below for nested schema) + // List of domains where the SAML automated user creation is enabled. + SAMLAutocreateUsersDomains []SettingsSAMLAutocreateUsersDomainsInitParameters `json:"samlAutocreateUsersDomains,omitempty" tf:"saml_autocreate_users_domains,omitempty"` + + // (Block List, Min: 1, Max: 1) Whether or not a SAML identity provider metadata file was provided to the Datadog organization. (see below for nested schema) + // Whether or not a SAML identity provider metadata file was provided to the Datadog organization. + SAMLIdpInitiatedLogin []SettingsSAMLIdpInitiatedLoginInitParameters `json:"samlIdpInitiatedLogin,omitempty" tf:"saml_idp_initiated_login,omitempty"` + + // (Block List, Min: 1, Max: 1) Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. (see below for nested schema) + // Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. + SAMLStrictMode []SettingsSAMLStrictModeInitParameters `json:"samlStrictMode,omitempty" tf:"saml_strict_mode,omitempty"` +} + +type OrganizationSettingsSettingsObservation struct { + + // (Boolean) Whether or not the organization users can share widgets outside of Datadog. Defaults to false. + // Whether or not the organization users can share widgets outside of Datadog. Defaults to `false`. + PrivateWidgetShare *bool `json:"privateWidgetShare,omitempty" tf:"private_widget_share,omitempty"` + + // (Block List, Min: 1, Max: 1) SAML properties (see below for nested schema) + // SAML properties + SAML []SettingsSAMLObservation `json:"saml,omitempty" tf:"saml,omitempty"` + + // only user). Allowed enum values: st, adm , ro, ERROR Defaults to "st". + // The access role of the user. Options are `st` (standard user), `adm` (admin user), or `ro` (read-only user). Allowed enum values: `st`, `adm` , `ro`, `ERROR` Defaults to `"st"`. + SAMLAutocreateAccessRole *string `json:"samlAutocreateAccessRole,omitempty" tf:"saml_autocreate_access_role,omitempty"` + + // (Block List, Min: 1, Max: 1) List of domains where the SAML automated user creation is enabled. (see below for nested schema) + // List of domains where the SAML automated user creation is enabled. + SAMLAutocreateUsersDomains []SettingsSAMLAutocreateUsersDomainsObservation `json:"samlAutocreateUsersDomains,omitempty" tf:"saml_autocreate_users_domains,omitempty"` + + // (Boolean) Whether or not SAML can be enabled for this organization. + // Whether or not SAML can be enabled for this organization. + SAMLCanBeEnabled *bool `json:"samlCanBeEnabled,omitempty" tf:"saml_can_be_enabled,omitempty"` + + // (String) Identity provider endpoint for SAML authentication. + // Identity provider endpoint for SAML authentication. + SAMLIdpEndpoint *string `json:"samlIdpEndpoint,omitempty" tf:"saml_idp_endpoint,omitempty"` + + // (Block List, Min: 1, Max: 1) Whether or not a SAML identity provider metadata file was provided to the Datadog organization. (see below for nested schema) + // Whether or not a SAML identity provider metadata file was provided to the Datadog organization. + SAMLIdpInitiatedLogin []SettingsSAMLIdpInitiatedLoginObservation `json:"samlIdpInitiatedLogin,omitempty" tf:"saml_idp_initiated_login,omitempty"` + + // (Boolean) Whether or not a SAML identity provider metadata file was provided to the Datadog organization. + // Whether or not a SAML identity provider metadata file was provided to the Datadog organization. + SAMLIdpMetadataUploaded *bool `json:"samlIdpMetadataUploaded,omitempty" tf:"saml_idp_metadata_uploaded,omitempty"` + + // (String) URL for SAML logging. + // URL for SAML logging. + SAMLLoginURL *string `json:"samlLoginUrl,omitempty" tf:"saml_login_url,omitempty"` + + // (Block List, Min: 1, Max: 1) Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. (see below for nested schema) + // Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. + SAMLStrictMode []SettingsSAMLStrictModeObservation `json:"samlStrictMode,omitempty" tf:"saml_strict_mode,omitempty"` +} + +type OrganizationSettingsSettingsParameters struct { + + // (Boolean) Whether or not the organization users can share widgets outside of Datadog. Defaults to false. + // Whether or not the organization users can share widgets outside of Datadog. Defaults to `false`. + // +kubebuilder:validation:Optional + PrivateWidgetShare *bool `json:"privateWidgetShare,omitempty" tf:"private_widget_share,omitempty"` + + // (Block List, Min: 1, Max: 1) SAML properties (see below for nested schema) + // SAML properties + // +kubebuilder:validation:Optional + SAML []SettingsSAMLParameters `json:"saml" tf:"saml,omitempty"` + + // only user). Allowed enum values: st, adm , ro, ERROR Defaults to "st". + // The access role of the user. Options are `st` (standard user), `adm` (admin user), or `ro` (read-only user). Allowed enum values: `st`, `adm` , `ro`, `ERROR` Defaults to `"st"`. + // +kubebuilder:validation:Optional + SAMLAutocreateAccessRole *string `json:"samlAutocreateAccessRole,omitempty" tf:"saml_autocreate_access_role,omitempty"` + + // (Block List, Min: 1, Max: 1) List of domains where the SAML automated user creation is enabled. (see below for nested schema) + // List of domains where the SAML automated user creation is enabled. + // +kubebuilder:validation:Optional + SAMLAutocreateUsersDomains []SettingsSAMLAutocreateUsersDomainsParameters `json:"samlAutocreateUsersDomains" tf:"saml_autocreate_users_domains,omitempty"` + + // (Block List, Min: 1, Max: 1) Whether or not a SAML identity provider metadata file was provided to the Datadog organization. (see below for nested schema) + // Whether or not a SAML identity provider metadata file was provided to the Datadog organization. + // +kubebuilder:validation:Optional + SAMLIdpInitiatedLogin []SettingsSAMLIdpInitiatedLoginParameters `json:"samlIdpInitiatedLogin" tf:"saml_idp_initiated_login,omitempty"` + + // (Block List, Min: 1, Max: 1) Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. (see below for nested schema) + // Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. + // +kubebuilder:validation:Optional + SAMLStrictMode []SettingsSAMLStrictModeParameters `json:"samlStrictMode" tf:"saml_strict_mode,omitempty"` +} + +type SettingsSAMLAutocreateUsersDomainsInitParameters struct { + + // (List of String) List of domains where the SAML automated user creation is enabled. + // List of domains where the SAML automated user creation is enabled. + Domains []*string `json:"domains,omitempty" tf:"domains,omitempty"` + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not the automated user creation based on SAML domain is enabled. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLAutocreateUsersDomainsObservation struct { + + // (List of String) List of domains where the SAML automated user creation is enabled. + // List of domains where the SAML automated user creation is enabled. + Domains []*string `json:"domains,omitempty" tf:"domains,omitempty"` + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not the automated user creation based on SAML domain is enabled. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLAutocreateUsersDomainsParameters struct { + + // (List of String) List of domains where the SAML automated user creation is enabled. + // List of domains where the SAML automated user creation is enabled. + // +kubebuilder:validation:Optional + Domains []*string `json:"domains,omitempty" tf:"domains,omitempty"` + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not the automated user creation based on SAML domain is enabled. Defaults to `false`. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLIdpInitiatedLoginInitParameters struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not a SAML identity provider metadata file was provided to the Datadog organization. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLIdpInitiatedLoginObservation struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not a SAML identity provider metadata file was provided to the Datadog organization. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLIdpInitiatedLoginParameters struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not a SAML identity provider metadata file was provided to the Datadog organization. Defaults to `false`. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLInitParameters struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not SAML is enabled for this organization. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLObservation struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not SAML is enabled for this organization. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLParameters struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not SAML is enabled for this organization. Defaults to `false`. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLStrictModeInitParameters struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLStrictModeObservation struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. Defaults to `false`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type SettingsSAMLStrictModeParameters struct { + + // (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + // Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. Defaults to `false`. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +// OrganizationSettingsSpec defines the desired state of OrganizationSettings +type OrganizationSettingsSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider OrganizationSettingsParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider OrganizationSettingsInitParameters `json:"initProvider,omitempty"` +} + +// OrganizationSettingsStatus defines the observed state of OrganizationSettings. +type OrganizationSettingsStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider OrganizationSettingsObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// OrganizationSettings is the Schema for the OrganizationSettingss API. Provides a Datadog Organization resource. This can be used to manage your Datadog organization's settings. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type OrganizationSettings struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec OrganizationSettingsSpec `json:"spec"` + Status OrganizationSettingsStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// OrganizationSettingsList contains a list of OrganizationSettingss +type OrganizationSettingsList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []OrganizationSettings `json:"items"` +} + +// Repository type metadata. +var ( + OrganizationSettings_Kind = "OrganizationSettings" + OrganizationSettings_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: OrganizationSettings_Kind}.String() + OrganizationSettings_KindAPIVersion = OrganizationSettings_Kind + "." + CRDGroupVersion.String() + OrganizationSettings_GroupVersionKind = CRDGroupVersion.WithKind(OrganizationSettings_Kind) +) + +func init() { + SchemeBuilder.Register(&OrganizationSettings{}, &OrganizationSettingsList{}) +} diff --git a/apis/datadog/v1alpha1/zz_powerpack_terraformed.go b/apis/datadog/v1alpha1/zz_powerpack_terraformed.go new file mode 100755 index 0000000..36663ac --- /dev/null +++ b/apis/datadog/v1alpha1/zz_powerpack_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Powerpack +func (mg *Powerpack) GetTerraformResourceType() string { + return "datadog_powerpack" +} + +// GetConnectionDetailsMapping for this Powerpack +func (tr *Powerpack) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Powerpack +func (tr *Powerpack) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Powerpack +func (tr *Powerpack) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Powerpack +func (tr *Powerpack) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Powerpack +func (tr *Powerpack) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Powerpack +func (tr *Powerpack) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Powerpack +func (tr *Powerpack) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Powerpack +func (tr *Powerpack) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Powerpack using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Powerpack) LateInitialize(attrs []byte) (bool, error) { + params := &PowerpackParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Powerpack) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_powerpack_types.go b/apis/datadog/v1alpha1/zz_powerpack_types.go new file mode 100755 index 0000000..cc36f63 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_powerpack_types.go @@ -0,0 +1,287 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type LayoutInitParameters struct { + + // (Number) The height of the widget. + // The height of the widget. + Height *float64 `json:"height,omitempty" tf:"height,omitempty"` + + // (Number) The width of the widget. + // The width of the widget. + Width *float64 `json:"width,omitempty" tf:"width,omitempty"` + + // (Number) The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0. + // The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0. + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) The position of the widget on the y (vertical) axis. Should be greater than or equal to 0. + // The position of the widget on the y (vertical) axis. Should be greater than or equal to 0. + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type LayoutObservation struct { + + // (Number) The height of the widget. + // The height of the widget. + Height *float64 `json:"height,omitempty" tf:"height,omitempty"` + + // (Number) The width of the widget. + // The width of the widget. + Width *float64 `json:"width,omitempty" tf:"width,omitempty"` + + // (Number) The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0. + // The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0. + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) The position of the widget on the y (vertical) axis. Should be greater than or equal to 0. + // The position of the widget on the y (vertical) axis. Should be greater than or equal to 0. + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type LayoutParameters struct { + + // (Number) The height of the widget. + // The height of the widget. + // +kubebuilder:validation:Optional + Height *float64 `json:"height,omitempty" tf:"height,omitempty"` + + // (Number) The width of the widget. + // The width of the widget. + // +kubebuilder:validation:Optional + Width *float64 `json:"width,omitempty" tf:"width,omitempty"` + + // (Number) The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0. + // The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0. + // +kubebuilder:validation:Optional + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) The position of the widget on the y (vertical) axis. Should be greater than or equal to 0. + // The position of the widget on the y (vertical) axis. Should be greater than or equal to 0. + // +kubebuilder:validation:Optional + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type PowerpackInitParameters struct { + + // (String) The description of the powerpack. + // The description of the powerpack. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // form dashboard. (see below for nested schema) + // The layout of the powerpack on a free-form dashboard. + Layout []LayoutInitParameters `json:"layout,omitempty" tf:"layout,omitempty"` + + // (String) The timeframe to use when displaying the widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + // The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`. + LiveSpan *string `json:"liveSpan,omitempty" tf:"live_span,omitempty"` + + // (String) The name for the powerpack. + // The name for the powerpack. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Whether or not title should be displayed in the powerpack. + // Whether or not title should be displayed in the powerpack. + ShowTitle *bool `json:"showTitle,omitempty" tf:"show_title,omitempty"` + + // (Set of String) List of tags to identify this powerpack. + // List of tags to identify this powerpack. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Block List) The list of template variables for this powerpack. (see below for nested schema) + // The list of template variables for this powerpack. + TemplateVariables []TemplateVariablesInitParameters `json:"templateVariables,omitempty" tf:"template_variables,omitempty"` +} + +type PowerpackObservation struct { + + // (String) The description of the powerpack. + // The description of the powerpack. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // form dashboard. (see below for nested schema) + // The layout of the powerpack on a free-form dashboard. + Layout []LayoutObservation `json:"layout,omitempty" tf:"layout,omitempty"` + + // (String) The timeframe to use when displaying the widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + // The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`. + LiveSpan *string `json:"liveSpan,omitempty" tf:"live_span,omitempty"` + + // (String) The name for the powerpack. + // The name for the powerpack. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Whether or not title should be displayed in the powerpack. + // Whether or not title should be displayed in the powerpack. + ShowTitle *bool `json:"showTitle,omitempty" tf:"show_title,omitempty"` + + // (Set of String) List of tags to identify this powerpack. + // List of tags to identify this powerpack. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Block List) The list of template variables for this powerpack. (see below for nested schema) + // The list of template variables for this powerpack. + TemplateVariables []TemplateVariablesObservation `json:"templateVariables,omitempty" tf:"template_variables,omitempty"` +} + +type PowerpackParameters struct { + + // (String) The description of the powerpack. + // The description of the powerpack. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // form dashboard. (see below for nested schema) + // The layout of the powerpack on a free-form dashboard. + // +kubebuilder:validation:Optional + Layout []LayoutParameters `json:"layout,omitempty" tf:"layout,omitempty"` + + // (String) The timeframe to use when displaying the widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + // The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`. + // +kubebuilder:validation:Optional + LiveSpan *string `json:"liveSpan,omitempty" tf:"live_span,omitempty"` + + // (String) The name for the powerpack. + // The name for the powerpack. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Whether or not title should be displayed in the powerpack. + // Whether or not title should be displayed in the powerpack. + // +kubebuilder:validation:Optional + ShowTitle *bool `json:"showTitle,omitempty" tf:"show_title,omitempty"` + + // (Set of String) List of tags to identify this powerpack. + // List of tags to identify this powerpack. + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Block List) The list of template variables for this powerpack. (see below for nested schema) + // The list of template variables for this powerpack. + // +kubebuilder:validation:Optional + TemplateVariables []TemplateVariablesParameters `json:"templateVariables,omitempty" tf:"template_variables,omitempty"` + + // (Block List) The list of widgets to display in the powerpack. (see below for nested schema) + // (String) The JSON formatted definition of the list of widgets to display in the powerpack. + // +upjet:crd:field:TFTag=- + // +kubebuilder:validation:Optional + Widget *string `json:"widget,omitempty" tf:"-"` +} + +type TemplateVariablesInitParameters struct { + + // (List of String) One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with OR. + // One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with `OR`. + Defaults []*string `json:"defaults,omitempty" tf:"defaults,omitempty"` + + // (String) The name for the powerpack. + // The name of the powerpack template variable. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type TemplateVariablesObservation struct { + + // (List of String) One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with OR. + // One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with `OR`. + Defaults []*string `json:"defaults,omitempty" tf:"defaults,omitempty"` + + // (String) The name for the powerpack. + // The name of the powerpack template variable. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type TemplateVariablesParameters struct { + + // (List of String) One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with OR. + // One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with `OR`. + // +kubebuilder:validation:Optional + Defaults []*string `json:"defaults,omitempty" tf:"defaults,omitempty"` + + // (String) The name for the powerpack. + // The name of the powerpack template variable. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` +} + +// PowerpackSpec defines the desired state of Powerpack +type PowerpackSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider PowerpackParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider PowerpackInitParameters `json:"initProvider,omitempty"` +} + +// PowerpackStatus defines the observed state of Powerpack. +type PowerpackStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider PowerpackObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Powerpack is the Schema for the Powerpacks API. Provides a Datadog powerpack resource. This can be used to create and manage Datadog powerpacks. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Powerpack struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec PowerpackSpec `json:"spec"` + Status PowerpackStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PowerpackList contains a list of Powerpacks +type PowerpackList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Powerpack `json:"items"` +} + +// Repository type metadata. +var ( + Powerpack_Kind = "Powerpack" + Powerpack_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Powerpack_Kind}.String() + Powerpack_KindAPIVersion = Powerpack_Kind + "." + CRDGroupVersion.String() + Powerpack_GroupVersionKind = CRDGroupVersion.WithKind(Powerpack_Kind) +) + +func init() { + SchemeBuilder.Register(&Powerpack{}, &PowerpackList{}) +} diff --git a/apis/datadog/v1alpha1/zz_restrictionpolicy_terraformed.go b/apis/datadog/v1alpha1/zz_restrictionpolicy_terraformed.go new file mode 100755 index 0000000..0a76da8 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_restrictionpolicy_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this RestrictionPolicy +func (mg *RestrictionPolicy) GetTerraformResourceType() string { + return "datadog_restriction_policy" +} + +// GetConnectionDetailsMapping for this RestrictionPolicy +func (tr *RestrictionPolicy) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this RestrictionPolicy +func (tr *RestrictionPolicy) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this RestrictionPolicy +func (tr *RestrictionPolicy) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this RestrictionPolicy +func (tr *RestrictionPolicy) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this RestrictionPolicy +func (tr *RestrictionPolicy) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this RestrictionPolicy +func (tr *RestrictionPolicy) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this RestrictionPolicy +func (tr *RestrictionPolicy) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this RestrictionPolicy +func (tr *RestrictionPolicy) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this RestrictionPolicy using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *RestrictionPolicy) LateInitialize(attrs []byte) (bool, error) { + params := &RestrictionPolicyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *RestrictionPolicy) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_restrictionpolicy_types.go b/apis/datadog/v1alpha1/zz_restrictionpolicy_types.go new file mode 100755 index 0000000..a5635e0 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_restrictionpolicy_types.go @@ -0,0 +1,159 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type BindingsInitParameters struct { + + // (Set of String) An array of principals. A principal is a subject or group of subjects. Each principal is formatted as type:id. Supported types: role and org. The org ID can be obtained through the api/v2/users API. + // An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role` and `org`. The org ID can be obtained through the api/v2/users API. + // +listType=set + Principals []*string `json:"principals,omitempty" tf:"principals,omitempty"` + + // policies/#supported-relations-for-resources + // The role/level of access. See this page for more details https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources + Relation *string `json:"relation,omitempty" tf:"relation,omitempty"` +} + +type BindingsObservation struct { + + // (Set of String) An array of principals. A principal is a subject or group of subjects. Each principal is formatted as type:id. Supported types: role and org. The org ID can be obtained through the api/v2/users API. + // An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role` and `org`. The org ID can be obtained through the api/v2/users API. + // +listType=set + Principals []*string `json:"principals,omitempty" tf:"principals,omitempty"` + + // policies/#supported-relations-for-resources + // The role/level of access. See this page for more details https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources + Relation *string `json:"relation,omitempty" tf:"relation,omitempty"` +} + +type BindingsParameters struct { + + // (Set of String) An array of principals. A principal is a subject or group of subjects. Each principal is formatted as type:id. Supported types: role and org. The org ID can be obtained through the api/v2/users API. + // An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role` and `org`. The org ID can be obtained through the api/v2/users API. + // +kubebuilder:validation:Optional + // +listType=set + Principals []*string `json:"principals" tf:"principals,omitempty"` + + // policies/#supported-relations-for-resources + // The role/level of access. See this page for more details https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources + // +kubebuilder:validation:Optional + Relation *string `json:"relation" tf:"relation,omitempty"` +} + +type RestrictionPolicyInitParameters struct { + + // (Block Set) (see below for nested schema) + Bindings []BindingsInitParameters `json:"bindings,omitempty" tf:"bindings,omitempty"` + + // (String) Identifier for the resource, formatted as resource_type:resource_id. + // Identifier for the resource, formatted as resource_type:resource_id. + // + // Note: Dashboards support is in private beta. Reach out to your Datadog contact or support to enable this. + ResourceID *string `json:"resourceId,omitempty" tf:"resource_id,omitempty"` +} + +type RestrictionPolicyObservation struct { + + // (Block Set) (see below for nested schema) + Bindings []BindingsObservation `json:"bindings,omitempty" tf:"bindings,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Identifier for the resource, formatted as resource_type:resource_id. + // Identifier for the resource, formatted as resource_type:resource_id. + // + // Note: Dashboards support is in private beta. Reach out to your Datadog contact or support to enable this. + ResourceID *string `json:"resourceId,omitempty" tf:"resource_id,omitempty"` +} + +type RestrictionPolicyParameters struct { + + // (Block Set) (see below for nested schema) + // +kubebuilder:validation:Optional + Bindings []BindingsParameters `json:"bindings,omitempty" tf:"bindings,omitempty"` + + // (String) Identifier for the resource, formatted as resource_type:resource_id. + // Identifier for the resource, formatted as resource_type:resource_id. + // + // Note: Dashboards support is in private beta. Reach out to your Datadog contact or support to enable this. + // +kubebuilder:validation:Optional + ResourceID *string `json:"resourceId,omitempty" tf:"resource_id,omitempty"` +} + +// RestrictionPolicySpec defines the desired state of RestrictionPolicy +type RestrictionPolicySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RestrictionPolicyParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RestrictionPolicyInitParameters `json:"initProvider,omitempty"` +} + +// RestrictionPolicyStatus defines the observed state of RestrictionPolicy. +type RestrictionPolicyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RestrictionPolicyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// RestrictionPolicy is the Schema for the RestrictionPolicys API. Provides a Datadog RestrictionPolicy resource. This can be used to create and manage Datadog restriction policies. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type RestrictionPolicy struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceId) || (has(self.initProvider) && has(self.initProvider.resourceId))",message="spec.forProvider.resourceId is a required parameter" + Spec RestrictionPolicySpec `json:"spec"` + Status RestrictionPolicyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RestrictionPolicyList contains a list of RestrictionPolicys +type RestrictionPolicyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RestrictionPolicy `json:"items"` +} + +// Repository type metadata. +var ( + RestrictionPolicy_Kind = "RestrictionPolicy" + RestrictionPolicy_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: RestrictionPolicy_Kind}.String() + RestrictionPolicy_KindAPIVersion = RestrictionPolicy_Kind + "." + CRDGroupVersion.String() + RestrictionPolicy_GroupVersionKind = CRDGroupVersion.WithKind(RestrictionPolicy_Kind) +) + +func init() { + SchemeBuilder.Register(&RestrictionPolicy{}, &RestrictionPolicyList{}) +} diff --git a/apis/datadog/v1alpha1/zz_role_terraformed.go b/apis/datadog/v1alpha1/zz_role_terraformed.go new file mode 100755 index 0000000..8740a7e --- /dev/null +++ b/apis/datadog/v1alpha1/zz_role_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Role +func (mg *Role) GetTerraformResourceType() string { + return "datadog_role" +} + +// GetConnectionDetailsMapping for this Role +func (tr *Role) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Role +func (tr *Role) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Role +func (tr *Role) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Role +func (tr *Role) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Role +func (tr *Role) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Role +func (tr *Role) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Role +func (tr *Role) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Role +func (tr *Role) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Role using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Role) LateInitialize(attrs []byte) (bool, error) { + params := &RoleParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Role) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_role_types.go b/apis/datadog/v1alpha1/zz_role_types.go new file mode 100755 index 0000000..3fb233c --- /dev/null +++ b/apis/datadog/v1alpha1/zz_role_types.go @@ -0,0 +1,161 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type PermissionInitParameters struct { + + // (String) The ID of this resource. + // ID of the permission to assign. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type PermissionObservation struct { + + // (String) The ID of this resource. + // ID of the permission to assign. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name of the role. + // Name of the permission. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type PermissionParameters struct { + + // (String) The ID of this resource. + // ID of the permission to assign. + // +kubebuilder:validation:Optional + ID *string `json:"id" tf:"id,omitempty"` +} + +type RoleInitParameters struct { + + // (String) Name of the role. + // Name of the role. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block Set) Set of objects containing the permission ID and the name of the permissions granted to this role. (see below for nested schema) + // Set of objects containing the permission ID and the name of the permissions granted to this role. + Permission []PermissionInitParameters `json:"permission,omitempty" tf:"permission,omitempty"` + + // (Boolean) If set to false, skip the validation call done during plan. + // If set to `false`, skip the validation call done during plan. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` +} + +type RoleObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name of the role. + // Name of the role. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block Set) Set of objects containing the permission ID and the name of the permissions granted to this role. (see below for nested schema) + // Set of objects containing the permission ID and the name of the permissions granted to this role. + Permission []PermissionObservation `json:"permission,omitempty" tf:"permission,omitempty"` + + // (Number) Number of users that have this role. + // Number of users that have this role. + UserCount *float64 `json:"userCount,omitempty" tf:"user_count,omitempty"` + + // (Boolean) If set to false, skip the validation call done during plan. + // If set to `false`, skip the validation call done during plan. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` +} + +type RoleParameters struct { + + // (String) Name of the role. + // Name of the role. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block Set) Set of objects containing the permission ID and the name of the permissions granted to this role. (see below for nested schema) + // Set of objects containing the permission ID and the name of the permissions granted to this role. + // +kubebuilder:validation:Optional + Permission []PermissionParameters `json:"permission,omitempty" tf:"permission,omitempty"` + + // (Boolean) If set to false, skip the validation call done during plan. + // If set to `false`, skip the validation call done during plan. + // +kubebuilder:validation:Optional + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` +} + +// RoleSpec defines the desired state of Role +type RoleSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RoleParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RoleInitParameters `json:"initProvider,omitempty"` +} + +// RoleStatus defines the observed state of Role. +type RoleStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RoleObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Role is the Schema for the Roles API. Provides a Datadog role resource. This can be used to create and manage Datadog roles. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Role struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec RoleSpec `json:"spec"` + Status RoleStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RoleList contains a list of Roles +type RoleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Role `json:"items"` +} + +// Repository type metadata. +var ( + Role_Kind = "Role" + Role_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Role_Kind}.String() + Role_KindAPIVersion = Role_Kind + "." + CRDGroupVersion.String() + Role_GroupVersionKind = CRDGroupVersion.WithKind(Role_Kind) +) + +func init() { + SchemeBuilder.Register(&Role{}, &RoleList{}) +} diff --git a/apis/datadog/v1alpha1/zz_rumapplication_terraformed.go b/apis/datadog/v1alpha1/zz_rumapplication_terraformed.go new file mode 100755 index 0000000..68bf337 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_rumapplication_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this RUMApplication +func (mg *RUMApplication) GetTerraformResourceType() string { + return "datadog_rum_application" +} + +// GetConnectionDetailsMapping for this RUMApplication +func (tr *RUMApplication) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this RUMApplication +func (tr *RUMApplication) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this RUMApplication +func (tr *RUMApplication) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this RUMApplication +func (tr *RUMApplication) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this RUMApplication +func (tr *RUMApplication) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this RUMApplication +func (tr *RUMApplication) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this RUMApplication +func (tr *RUMApplication) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this RUMApplication +func (tr *RUMApplication) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this RUMApplication using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *RUMApplication) LateInitialize(attrs []byte) (bool, error) { + params := &RUMApplicationParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *RUMApplication) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_rumapplication_types.go b/apis/datadog/v1alpha1/zz_rumapplication_types.go new file mode 100755 index 0000000..e202f9c --- /dev/null +++ b/apis/datadog/v1alpha1/zz_rumapplication_types.go @@ -0,0 +1,122 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type RUMApplicationInitParameters struct { + + // (String) Name of the RUM application. + // Name of the RUM application. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // native, flutter. Defaults to "browser". + // Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`. Defaults to `"browser"`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type RUMApplicationObservation struct { + + // (String) The client token. + // The client token. + ClientToken *string `json:"clientToken,omitempty" tf:"client_token,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name of the RUM application. + // Name of the RUM application. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // native, flutter. Defaults to "browser". + // Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`. Defaults to `"browser"`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type RUMApplicationParameters struct { + + // (String) Name of the RUM application. + // Name of the RUM application. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // native, flutter. Defaults to "browser". + // Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`. Defaults to `"browser"`. + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +// RUMApplicationSpec defines the desired state of RUMApplication +type RUMApplicationSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RUMApplicationParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RUMApplicationInitParameters `json:"initProvider,omitempty"` +} + +// RUMApplicationStatus defines the observed state of RUMApplication. +type RUMApplicationStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RUMApplicationObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// RUMApplication is the Schema for the RUMApplications API. Provides a Datadog RUM application resource. This can be used to create and manage Datadog RUM applications. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type RUMApplication struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec RUMApplicationSpec `json:"spec"` + Status RUMApplicationStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RUMApplicationList contains a list of RUMApplications +type RUMApplicationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RUMApplication `json:"items"` +} + +// Repository type metadata. +var ( + RUMApplication_Kind = "RUMApplication" + RUMApplication_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: RUMApplication_Kind}.String() + RUMApplication_KindAPIVersion = RUMApplication_Kind + "." + CRDGroupVersion.String() + RUMApplication_GroupVersionKind = CRDGroupVersion.WithKind(RUMApplication_Kind) +) + +func init() { + SchemeBuilder.Register(&RUMApplication{}, &RUMApplicationList{}) +} diff --git a/apis/datadog/v1alpha1/zz_serviceaccount_terraformed.go b/apis/datadog/v1alpha1/zz_serviceaccount_terraformed.go new file mode 100755 index 0000000..14d6efe --- /dev/null +++ b/apis/datadog/v1alpha1/zz_serviceaccount_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ServiceAccount +func (mg *ServiceAccount) GetTerraformResourceType() string { + return "datadog_service_account" +} + +// GetConnectionDetailsMapping for this ServiceAccount +func (tr *ServiceAccount) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ServiceAccount +func (tr *ServiceAccount) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ServiceAccount +func (tr *ServiceAccount) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ServiceAccount +func (tr *ServiceAccount) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ServiceAccount +func (tr *ServiceAccount) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ServiceAccount +func (tr *ServiceAccount) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ServiceAccount +func (tr *ServiceAccount) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ServiceAccount +func (tr *ServiceAccount) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ServiceAccount using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ServiceAccount) LateInitialize(attrs []byte) (bool, error) { + params := &ServiceAccountParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ServiceAccount) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_serviceaccount_types.go b/apis/datadog/v1alpha1/zz_serviceaccount_types.go new file mode 100755 index 0000000..eb725d2 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_serviceaccount_types.go @@ -0,0 +1,147 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ServiceAccountInitParameters struct { + + // (Boolean) Whether the service account is disabled. Defaults to false. + // Whether the service account is disabled. Defaults to `false`. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (String) Email of the associated user. + // Email of the associated user. + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) Name for the service account. + // Name for the service account. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) A list a role IDs to assign to the service account. + // A list a role IDs to assign to the service account. + // +listType=set + Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` +} + +type ServiceAccountObservation struct { + + // (Boolean) Whether the service account is disabled. Defaults to false. + // Whether the service account is disabled. Defaults to `false`. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (String) Email of the associated user. + // Email of the associated user. + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name for the service account. + // Name for the service account. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) A list a role IDs to assign to the service account. + // A list a role IDs to assign to the service account. + // +listType=set + Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` +} + +type ServiceAccountParameters struct { + + // (Boolean) Whether the service account is disabled. Defaults to false. + // Whether the service account is disabled. Defaults to `false`. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (String) Email of the associated user. + // Email of the associated user. + // +kubebuilder:validation:Optional + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) Name for the service account. + // Name for the service account. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) A list a role IDs to assign to the service account. + // A list a role IDs to assign to the service account. + // +kubebuilder:validation:Optional + // +listType=set + Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` +} + +// ServiceAccountSpec defines the desired state of ServiceAccount +type ServiceAccountSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ServiceAccountParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ServiceAccountInitParameters `json:"initProvider,omitempty"` +} + +// ServiceAccountStatus defines the observed state of ServiceAccount. +type ServiceAccountStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ServiceAccountObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ServiceAccount is the Schema for the ServiceAccounts API. Provides a Datadog service account resource. This can be used to create and manage Datadog service accounts. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ServiceAccount struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.email) || (has(self.initProvider) && has(self.initProvider.email))",message="spec.forProvider.email is a required parameter" + Spec ServiceAccountSpec `json:"spec"` + Status ServiceAccountStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ServiceAccountList contains a list of ServiceAccounts +type ServiceAccountList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ServiceAccount `json:"items"` +} + +// Repository type metadata. +var ( + ServiceAccount_Kind = "ServiceAccount" + ServiceAccount_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ServiceAccount_Kind}.String() + ServiceAccount_KindAPIVersion = ServiceAccount_Kind + "." + CRDGroupVersion.String() + ServiceAccount_GroupVersionKind = CRDGroupVersion.WithKind(ServiceAccount_Kind) +) + +func init() { + SchemeBuilder.Register(&ServiceAccount{}, &ServiceAccountList{}) +} diff --git a/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_terraformed.go b/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_terraformed.go new file mode 100755 index 0000000..e6ddd7c --- /dev/null +++ b/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ServiceAccountApplicationKey +func (mg *ServiceAccountApplicationKey) GetTerraformResourceType() string { + return "datadog_service_account_application_key" +} + +// GetConnectionDetailsMapping for this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"key": "status.atProvider.key"} +} + +// GetObservation of this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ServiceAccountApplicationKey +func (tr *ServiceAccountApplicationKey) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ServiceAccountApplicationKey using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ServiceAccountApplicationKey) LateInitialize(attrs []byte) (bool, error) { + params := &ServiceAccountApplicationKeyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ServiceAccountApplicationKey) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_types.go b/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_types.go new file mode 100755 index 0000000..615abdb --- /dev/null +++ b/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_types.go @@ -0,0 +1,127 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ServiceAccountApplicationKeyInitParameters struct { + + // (String) Name of the application key. + // Name of the application key. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) ID of the service account that owns this key. + // ID of the service account that owns this key. + ServiceAccountID *string `json:"serviceAccountId,omitempty" tf:"service_account_id,omitempty"` +} + +type ServiceAccountApplicationKeyObservation struct { + + // (String) Creation date of the application key. + // Creation date of the application key. + CreatedAt *string `json:"createdAt,omitempty" tf:"created_at,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The last four characters of the application key. + // The last four characters of the application key. + Last4 *string `json:"last4,omitempty" tf:"last4,omitempty"` + + // (String) Name of the application key. + // Name of the application key. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) ID of the service account that owns this key. + // ID of the service account that owns this key. + ServiceAccountID *string `json:"serviceAccountId,omitempty" tf:"service_account_id,omitempty"` +} + +type ServiceAccountApplicationKeyParameters struct { + + // (String) Name of the application key. + // Name of the application key. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) ID of the service account that owns this key. + // ID of the service account that owns this key. + // +kubebuilder:validation:Optional + ServiceAccountID *string `json:"serviceAccountId,omitempty" tf:"service_account_id,omitempty"` +} + +// ServiceAccountApplicationKeySpec defines the desired state of ServiceAccountApplicationKey +type ServiceAccountApplicationKeySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ServiceAccountApplicationKeyParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ServiceAccountApplicationKeyInitParameters `json:"initProvider,omitempty"` +} + +// ServiceAccountApplicationKeyStatus defines the observed state of ServiceAccountApplicationKey. +type ServiceAccountApplicationKeyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ServiceAccountApplicationKeyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ServiceAccountApplicationKey is the Schema for the ServiceAccountApplicationKeys API. Provides a Datadog service_account_application_key resource. This can be used to create and manage Datadog service account application keys. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ServiceAccountApplicationKey struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.serviceAccountId) || (has(self.initProvider) && has(self.initProvider.serviceAccountId))",message="spec.forProvider.serviceAccountId is a required parameter" + Spec ServiceAccountApplicationKeySpec `json:"spec"` + Status ServiceAccountApplicationKeyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ServiceAccountApplicationKeyList contains a list of ServiceAccountApplicationKeys +type ServiceAccountApplicationKeyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ServiceAccountApplicationKey `json:"items"` +} + +// Repository type metadata. +var ( + ServiceAccountApplicationKey_Kind = "ServiceAccountApplicationKey" + ServiceAccountApplicationKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ServiceAccountApplicationKey_Kind}.String() + ServiceAccountApplicationKey_KindAPIVersion = ServiceAccountApplicationKey_Kind + "." + CRDGroupVersion.String() + ServiceAccountApplicationKey_GroupVersionKind = CRDGroupVersion.WithKind(ServiceAccountApplicationKey_Kind) +) + +func init() { + SchemeBuilder.Register(&ServiceAccountApplicationKey{}, &ServiceAccountApplicationKeyList{}) +} diff --git a/apis/datadog/v1alpha1/zz_servicedefinitionyaml_terraformed.go b/apis/datadog/v1alpha1/zz_servicedefinitionyaml_terraformed.go new file mode 100755 index 0000000..ac7818f --- /dev/null +++ b/apis/datadog/v1alpha1/zz_servicedefinitionyaml_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ServiceDefinitionYAML +func (mg *ServiceDefinitionYAML) GetTerraformResourceType() string { + return "datadog_service_definition_yaml" +} + +// GetConnectionDetailsMapping for this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ServiceDefinitionYAML +func (tr *ServiceDefinitionYAML) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ServiceDefinitionYAML using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ServiceDefinitionYAML) LateInitialize(attrs []byte) (bool, error) { + params := &ServiceDefinitionYAMLParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ServiceDefinitionYAML) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_servicedefinitionyaml_types.go b/apis/datadog/v1alpha1/zz_servicedefinitionyaml_types.go new file mode 100755 index 0000000..f6a725d --- /dev/null +++ b/apis/datadog/v1alpha1/zz_servicedefinitionyaml_types.go @@ -0,0 +1,105 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ServiceDefinitionYAMLInitParameters struct { + + // (String) The YAML/JSON formatted definition of the service + // The YAML/JSON formatted definition of the service + ServiceDefinition *string `json:"serviceDefinition,omitempty" tf:"service_definition,omitempty"` +} + +type ServiceDefinitionYAMLObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The YAML/JSON formatted definition of the service + // The YAML/JSON formatted definition of the service + ServiceDefinition *string `json:"serviceDefinition,omitempty" tf:"service_definition,omitempty"` +} + +type ServiceDefinitionYAMLParameters struct { + + // (String) The YAML/JSON formatted definition of the service + // The YAML/JSON formatted definition of the service + // +kubebuilder:validation:Optional + ServiceDefinition *string `json:"serviceDefinition,omitempty" tf:"service_definition,omitempty"` +} + +// ServiceDefinitionYAMLSpec defines the desired state of ServiceDefinitionYAML +type ServiceDefinitionYAMLSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ServiceDefinitionYAMLParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ServiceDefinitionYAMLInitParameters `json:"initProvider,omitempty"` +} + +// ServiceDefinitionYAMLStatus defines the observed state of ServiceDefinitionYAML. +type ServiceDefinitionYAMLStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ServiceDefinitionYAMLObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ServiceDefinitionYAML is the Schema for the ServiceDefinitionYAMLs API. Provides a Datadog service definition resource. This can be used to create and manage Datadog service definitions in the service catalog using the YAML/JSON definition. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ServiceDefinitionYAML struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.serviceDefinition) || (has(self.initProvider) && has(self.initProvider.serviceDefinition))",message="spec.forProvider.serviceDefinition is a required parameter" + Spec ServiceDefinitionYAMLSpec `json:"spec"` + Status ServiceDefinitionYAMLStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ServiceDefinitionYAMLList contains a list of ServiceDefinitionYAMLs +type ServiceDefinitionYAMLList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ServiceDefinitionYAML `json:"items"` +} + +// Repository type metadata. +var ( + ServiceDefinitionYAML_Kind = "ServiceDefinitionYAML" + ServiceDefinitionYAML_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ServiceDefinitionYAML_Kind}.String() + ServiceDefinitionYAML_KindAPIVersion = ServiceDefinitionYAML_Kind + "." + CRDGroupVersion.String() + ServiceDefinitionYAML_GroupVersionKind = CRDGroupVersion.WithKind(ServiceDefinitionYAML_Kind) +) + +func init() { + SchemeBuilder.Register(&ServiceDefinitionYAML{}, &ServiceDefinitionYAMLList{}) +} diff --git a/apis/datadog/v1alpha1/zz_servicelevelobjective_terraformed.go b/apis/datadog/v1alpha1/zz_servicelevelobjective_terraformed.go new file mode 100755 index 0000000..6bd57e3 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_servicelevelobjective_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ServiceLevelObjective +func (mg *ServiceLevelObjective) GetTerraformResourceType() string { + return "datadog_service_level_objective" +} + +// GetConnectionDetailsMapping for this ServiceLevelObjective +func (tr *ServiceLevelObjective) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ServiceLevelObjective +func (tr *ServiceLevelObjective) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ServiceLevelObjective +func (tr *ServiceLevelObjective) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ServiceLevelObjective +func (tr *ServiceLevelObjective) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ServiceLevelObjective +func (tr *ServiceLevelObjective) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ServiceLevelObjective +func (tr *ServiceLevelObjective) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ServiceLevelObjective +func (tr *ServiceLevelObjective) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ServiceLevelObjective +func (tr *ServiceLevelObjective) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ServiceLevelObjective using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ServiceLevelObjective) LateInitialize(attrs []byte) (bool, error) { + params := &ServiceLevelObjectiveParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ServiceLevelObjective) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_servicelevelobjective_types.go b/apis/datadog/v1alpha1/zz_servicelevelobjective_types.go new file mode 100755 index 0000000..9708af6 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_servicelevelobjective_types.go @@ -0,0 +1,573 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type FormulaInitParameters struct { + + // (String) The formula string, which is an expression involving named queries. + // The formula string, which is an expression involving named queries. + FormulaExpression *string `json:"formulaExpression,omitempty" tf:"formula_expression,omitempty"` +} + +type FormulaObservation struct { + + // (String) The formula string, which is an expression involving named queries. + // The formula string, which is an expression involving named queries. + FormulaExpression *string `json:"formulaExpression,omitempty" tf:"formula_expression,omitempty"` +} + +type FormulaParameters struct { + + // (String) The formula string, which is an expression involving named queries. + // The formula string, which is an expression involving named queries. + // +kubebuilder:validation:Optional + FormulaExpression *string `json:"formulaExpression" tf:"formula_expression,omitempty"` +} + +type MetricQueryInitParameters struct { + + // (String) The data source for metrics queries. Defaults to "metrics". + // The data source for metrics queries. Defaults to `"metrics"`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` + + // (String) Name of Datadog service level objective + // The name of the query for use in formulas. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // The metrics query definition. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type MetricQueryObservation struct { + + // (String) The data source for metrics queries. Defaults to "metrics". + // The data source for metrics queries. Defaults to `"metrics"`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` + + // (String) Name of Datadog service level objective + // The name of the query for use in formulas. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // The metrics query definition. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type MetricQueryParameters struct { + + // (String) The data source for metrics queries. Defaults to "metrics". + // The data source for metrics queries. Defaults to `"metrics"`. + // +kubebuilder:validation:Optional + DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` + + // (String) Name of Datadog service level objective + // The name of the query for use in formulas. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // The metrics query definition. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type QueryInitParameters struct { + + // (String) The sum of the total events. + // The sum of the `total` events. + Denominator *string `json:"denominator,omitempty" tf:"denominator,omitempty"` + + // (String) The sum of all the good events. + // The sum of all the `good` events. + Numerator *string `json:"numerator,omitempty" tf:"numerator,omitempty"` +} + +type QueryObservation struct { + + // (String) The sum of the total events. + // The sum of the `total` events. + Denominator *string `json:"denominator,omitempty" tf:"denominator,omitempty"` + + // (String) The sum of all the good events. + // The sum of all the `good` events. + Numerator *string `json:"numerator,omitempty" tf:"numerator,omitempty"` +} + +type QueryParameters struct { + + // (String) The sum of the total events. + // The sum of the `total` events. + // +kubebuilder:validation:Optional + Denominator *string `json:"denominator" tf:"denominator,omitempty"` + + // (String) The sum of all the good events. + // The sum of all the `good` events. + // +kubebuilder:validation:Optional + Numerator *string `json:"numerator" tf:"numerator,omitempty"` +} + +type QueryQueryInitParameters struct { + + // (Block List, Max: 1) A timeseries formula and functions metrics query. (see below for nested schema) + // A timeseries formula and functions metrics query. + MetricQuery []MetricQueryInitParameters `json:"metricQuery,omitempty" tf:"metric_query,omitempty"` +} + +type QueryQueryObservation struct { + + // (Block List, Max: 1) A timeseries formula and functions metrics query. (see below for nested schema) + // A timeseries formula and functions metrics query. + MetricQuery []MetricQueryObservation `json:"metricQuery,omitempty" tf:"metric_query,omitempty"` +} + +type QueryQueryParameters struct { + + // (Block List, Max: 1) A timeseries formula and functions metrics query. (see below for nested schema) + // A timeseries formula and functions metrics query. + // +kubebuilder:validation:Optional + MetricQuery []MetricQueryParameters `json:"metricQuery,omitempty" tf:"metric_query,omitempty"` +} + +type ServiceLevelObjectiveInitParameters struct { + + // (String) A description of this service level objective. + // A description of this service level objective. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). + // A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). + ForceDelete *bool `json:"forceDelete,omitempty" tf:"force_delete,omitempty"` + + // based SLOs + // A static set of groups to filter monitor-based SLOs + // +listType=set + Groups []*string `json:"groups,omitempty" tf:"groups,omitempty"` + + // (Set of Number) A static set of monitor IDs to use as part of the SLO + // A static set of monitor IDs to use as part of the SLO + // +listType=set + MonitorIds []*float64 `json:"monitorIds,omitempty" tf:"monitor_ids,omitempty"` + + // (String) Name of Datadog service level objective + // Name of Datadog service level objective + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // The metric query of good / total events + Query []QueryInitParameters `json:"query,omitempty" tf:"query,omitempty"` + + // (Block List, Max: 1) A map of SLI specifications to use as part of the SLO. (see below for nested schema) + // A map of SLI specifications to use as part of the SLO. + SliSpecification []SliSpecificationInitParameters `json:"sliSpecification,omitempty" tf:"sli_specification,omitempty"` + + // (Set of String) A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Number) The objective's target in (0,100). This must match the corresponding thresholds of the primary time frame. + // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. + TargetThreshold *float64 `json:"targetThreshold,omitempty" tf:"target_threshold,omitempty"` + + // (Block List, Min: 1) A list of thresholds and targets that define the service level objectives from the provided SLIs. (see below for nested schema) + // A list of thresholds and targets that define the service level objectives from the provided SLIs. + Thresholds []ThresholdsInitParameters `json:"thresholds,omitempty" tf:"thresholds,omitempty"` + + // (String) The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are 7d, 30d, 90d, custom. + // The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`. + Timeframe *string `json:"timeframe,omitempty" tf:"timeframe,omitempty"` + + // (String) The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are metric, monitor, time_slice. + // The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Valid values are `metric`, `monitor`, `time_slice`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Boolean) Whether or not to validate the SLO. + // Whether or not to validate the SLO. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` + + // (Number) The objective's warning value in (0,100). This must be greater than the target value and match the corresponding thresholds of the primary time frame. + // The objective's warning value in `(0,100)`. This must be greater than the target value and match the corresponding thresholds of the primary time frame. + WarningThreshold *float64 `json:"warningThreshold,omitempty" tf:"warning_threshold,omitempty"` +} + +type ServiceLevelObjectiveObservation struct { + + // (String) A description of this service level objective. + // A description of this service level objective. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). + // A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). + ForceDelete *bool `json:"forceDelete,omitempty" tf:"force_delete,omitempty"` + + // based SLOs + // A static set of groups to filter monitor-based SLOs + // +listType=set + Groups []*string `json:"groups,omitempty" tf:"groups,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Set of Number) A static set of monitor IDs to use as part of the SLO + // A static set of monitor IDs to use as part of the SLO + // +listType=set + MonitorIds []*float64 `json:"monitorIds,omitempty" tf:"monitor_ids,omitempty"` + + // (String) Name of Datadog service level objective + // Name of Datadog service level objective + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // The metric query of good / total events + Query []QueryObservation `json:"query,omitempty" tf:"query,omitempty"` + + // (Block List, Max: 1) A map of SLI specifications to use as part of the SLO. (see below for nested schema) + // A map of SLI specifications to use as part of the SLO. + SliSpecification []SliSpecificationObservation `json:"sliSpecification,omitempty" tf:"sli_specification,omitempty"` + + // (Set of String) A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Number) The objective's target in (0,100). This must match the corresponding thresholds of the primary time frame. + // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. + TargetThreshold *float64 `json:"targetThreshold,omitempty" tf:"target_threshold,omitempty"` + + // (Block List, Min: 1) A list of thresholds and targets that define the service level objectives from the provided SLIs. (see below for nested schema) + // A list of thresholds and targets that define the service level objectives from the provided SLIs. + Thresholds []ThresholdsObservation `json:"thresholds,omitempty" tf:"thresholds,omitempty"` + + // (String) The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are 7d, 30d, 90d, custom. + // The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`. + Timeframe *string `json:"timeframe,omitempty" tf:"timeframe,omitempty"` + + // (String) The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are metric, monitor, time_slice. + // The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Valid values are `metric`, `monitor`, `time_slice`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Boolean) Whether or not to validate the SLO. + // Whether or not to validate the SLO. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` + + // (Number) The objective's warning value in (0,100). This must be greater than the target value and match the corresponding thresholds of the primary time frame. + // The objective's warning value in `(0,100)`. This must be greater than the target value and match the corresponding thresholds of the primary time frame. + WarningThreshold *float64 `json:"warningThreshold,omitempty" tf:"warning_threshold,omitempty"` +} + +type ServiceLevelObjectiveParameters struct { + + // (String) A description of this service level objective. + // A description of this service level objective. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). + // A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). + // +kubebuilder:validation:Optional + ForceDelete *bool `json:"forceDelete,omitempty" tf:"force_delete,omitempty"` + + // based SLOs + // A static set of groups to filter monitor-based SLOs + // +kubebuilder:validation:Optional + // +listType=set + Groups []*string `json:"groups,omitempty" tf:"groups,omitempty"` + + // (Set of Number) A static set of monitor IDs to use as part of the SLO + // A static set of monitor IDs to use as part of the SLO + // +kubebuilder:validation:Optional + // +listType=set + MonitorIds []*float64 `json:"monitorIds,omitempty" tf:"monitor_ids,omitempty"` + + // (String) Name of Datadog service level objective + // Name of Datadog service level objective + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // The metric query of good / total events + // +kubebuilder:validation:Optional + Query []QueryParameters `json:"query,omitempty" tf:"query,omitempty"` + + // (Block List, Max: 1) A map of SLI specifications to use as part of the SLO. (see below for nested schema) + // A map of SLI specifications to use as part of the SLO. + // +kubebuilder:validation:Optional + SliSpecification []SliSpecificationParameters `json:"sliSpecification,omitempty" tf:"sli_specification,omitempty"` + + // (Set of String) A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Number) The objective's target in (0,100). This must match the corresponding thresholds of the primary time frame. + // The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame. + // +kubebuilder:validation:Optional + TargetThreshold *float64 `json:"targetThreshold,omitempty" tf:"target_threshold,omitempty"` + + // (Block List, Min: 1) A list of thresholds and targets that define the service level objectives from the provided SLIs. (see below for nested schema) + // A list of thresholds and targets that define the service level objectives from the provided SLIs. + // +kubebuilder:validation:Optional + Thresholds []ThresholdsParameters `json:"thresholds,omitempty" tf:"thresholds,omitempty"` + + // (String) The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are 7d, 30d, 90d, custom. + // The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`. + // +kubebuilder:validation:Optional + Timeframe *string `json:"timeframe,omitempty" tf:"timeframe,omitempty"` + + // (String) The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are metric, monitor, time_slice. + // The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Valid values are `metric`, `monitor`, `time_slice`. + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Boolean) Whether or not to validate the SLO. + // Whether or not to validate the SLO. + // +kubebuilder:validation:Optional + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` + + // (Number) The objective's warning value in (0,100). This must be greater than the target value and match the corresponding thresholds of the primary time frame. + // The objective's warning value in `(0,100)`. This must be greater than the target value and match the corresponding thresholds of the primary time frame. + // +kubebuilder:validation:Optional + WarningThreshold *float64 `json:"warningThreshold,omitempty" tf:"warning_threshold,omitempty"` +} + +type SliSpecificationInitParameters struct { + + // (Block List, Min: 1, Max: 1) The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. (see below for nested schema) + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + TimeSlice []TimeSliceInitParameters `json:"timeSlice,omitempty" tf:"time_slice,omitempty"` +} + +type SliSpecificationObservation struct { + + // (Block List, Min: 1, Max: 1) The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. (see below for nested schema) + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + TimeSlice []TimeSliceObservation `json:"timeSlice,omitempty" tf:"time_slice,omitempty"` +} + +type SliSpecificationParameters struct { + + // (Block List, Min: 1, Max: 1) The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. (see below for nested schema) + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. + // +kubebuilder:validation:Optional + TimeSlice []TimeSliceParameters `json:"timeSlice" tf:"time_slice,omitempty"` +} + +type ThresholdsInitParameters struct { + + // (Number) The objective's target in (0,100). + // The objective's target in `(0,100)`. + Target *float64 `json:"target,omitempty" tf:"target,omitempty"` + + // (String) The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are 7d, 30d, 90d, custom. + // The time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`. + Timeframe *string `json:"timeframe,omitempty" tf:"timeframe,omitempty"` + + // (Number) The objective's warning value in (0,100). This must be greater than the target value. + // The objective's warning value in `(0,100)`. This must be greater than the target value. + Warning *float64 `json:"warning,omitempty" tf:"warning,omitempty"` +} + +type ThresholdsObservation struct { + + // (Number) The objective's target in (0,100). + // The objective's target in `(0,100)`. + Target *float64 `json:"target,omitempty" tf:"target,omitempty"` + + // (String) A string representation of the target that indicates its precision. It uses trailing zeros to show significant decimal places (e.g. 98.00). + // A string representation of the target that indicates its precision. It uses trailing zeros to show significant decimal places (e.g. `98.00`). + TargetDisplay *string `json:"targetDisplay,omitempty" tf:"target_display,omitempty"` + + // (String) The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are 7d, 30d, 90d, custom. + // The time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`. + Timeframe *string `json:"timeframe,omitempty" tf:"timeframe,omitempty"` + + // (Number) The objective's warning value in (0,100). This must be greater than the target value. + // The objective's warning value in `(0,100)`. This must be greater than the target value. + Warning *float64 `json:"warning,omitempty" tf:"warning,omitempty"` + + // (String) A string representation of the warning target (see the description of the target_display field for details). + // A string representation of the warning target (see the description of the target_display field for details). + WarningDisplay *string `json:"warningDisplay,omitempty" tf:"warning_display,omitempty"` +} + +type ThresholdsParameters struct { + + // (Number) The objective's target in (0,100). + // The objective's target in `(0,100)`. + // +kubebuilder:validation:Optional + Target *float64 `json:"target" tf:"target,omitempty"` + + // (String) The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are 7d, 30d, 90d, custom. + // The time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`. + // +kubebuilder:validation:Optional + Timeframe *string `json:"timeframe" tf:"timeframe,omitempty"` + + // (Number) The objective's warning value in (0,100). This must be greater than the target value. + // The objective's warning value in `(0,100)`. This must be greater than the target value. + // +kubebuilder:validation:Optional + Warning *float64 `json:"warning,omitempty" tf:"warning,omitempty"` +} + +type TimeSliceInitParameters struct { + + // (String) The comparator used to compare the SLI value to the threshold. Valid values are >, >=, <, <=. + // The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + Comparator *string `json:"comparator,omitempty" tf:"comparator,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Query []TimeSliceQueryInitParameters `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The threshold value to which each SLI value will be compared. + // The threshold value to which each SLI value will be compared. + Threshold *float64 `json:"threshold,omitempty" tf:"threshold,omitempty"` +} + +type TimeSliceObservation struct { + + // (String) The comparator used to compare the SLI value to the threshold. Valid values are >, >=, <, <=. + // The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + Comparator *string `json:"comparator,omitempty" tf:"comparator,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + Query []TimeSliceQueryObservation `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The threshold value to which each SLI value will be compared. + // The threshold value to which each SLI value will be compared. + Threshold *float64 `json:"threshold,omitempty" tf:"threshold,omitempty"` +} + +type TimeSliceParameters struct { + + // (String) The comparator used to compare the SLI value to the threshold. Valid values are >, >=, <, <=. + // The comparator used to compare the SLI value to the threshold. Valid values are `>`, `>=`, `<`, `<=`. + // +kubebuilder:validation:Optional + Comparator *string `json:"comparator" tf:"comparator,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // A timeseries query, containing named data-source-specific queries and a formula involving the named queries. + // +kubebuilder:validation:Optional + Query []TimeSliceQueryParameters `json:"query" tf:"query,omitempty"` + + // (Number) The threshold value to which each SLI value will be compared. + // The threshold value to which each SLI value will be compared. + // +kubebuilder:validation:Optional + Threshold *float64 `json:"threshold" tf:"threshold,omitempty"` +} + +type TimeSliceQueryInitParameters struct { + + // slice SLO. (see below for nested schema) + // A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + Formula []FormulaInitParameters `json:"formula,omitempty" tf:"formula,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // A list of data-source-specific queries that are in the formula. + Query []QueryQueryInitParameters `json:"query,omitempty" tf:"query,omitempty"` +} + +type TimeSliceQueryObservation struct { + + // slice SLO. (see below for nested schema) + // A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + Formula []FormulaObservation `json:"formula,omitempty" tf:"formula,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // A list of data-source-specific queries that are in the formula. + Query []QueryQueryObservation `json:"query,omitempty" tf:"query,omitempty"` +} + +type TimeSliceQueryParameters struct { + + // slice SLO. (see below for nested schema) + // A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. + // +kubebuilder:validation:Optional + Formula []FormulaParameters `json:"formula" tf:"formula,omitempty"` + + // (Block List, Max: 1) The metric query of good / total events (see below for nested schema) + // A list of data-source-specific queries that are in the formula. + // +kubebuilder:validation:Optional + Query []QueryQueryParameters `json:"query" tf:"query,omitempty"` +} + +// ServiceLevelObjectiveSpec defines the desired state of ServiceLevelObjective +type ServiceLevelObjectiveSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ServiceLevelObjectiveParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ServiceLevelObjectiveInitParameters `json:"initProvider,omitempty"` +} + +// ServiceLevelObjectiveStatus defines the observed state of ServiceLevelObjective. +type ServiceLevelObjectiveStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ServiceLevelObjectiveObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ServiceLevelObjective is the Schema for the ServiceLevelObjectives API. Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ServiceLevelObjective struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.thresholds) || (has(self.initProvider) && has(self.initProvider.thresholds))",message="spec.forProvider.thresholds is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.type) || (has(self.initProvider) && has(self.initProvider.type))",message="spec.forProvider.type is a required parameter" + Spec ServiceLevelObjectiveSpec `json:"spec"` + Status ServiceLevelObjectiveStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ServiceLevelObjectiveList contains a list of ServiceLevelObjectives +type ServiceLevelObjectiveList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ServiceLevelObjective `json:"items"` +} + +// Repository type metadata. +var ( + ServiceLevelObjective_Kind = "ServiceLevelObjective" + ServiceLevelObjective_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ServiceLevelObjective_Kind}.String() + ServiceLevelObjective_KindAPIVersion = ServiceLevelObjective_Kind + "." + CRDGroupVersion.String() + ServiceLevelObjective_GroupVersionKind = CRDGroupVersion.WithKind(ServiceLevelObjective_Kind) +) + +func init() { + SchemeBuilder.Register(&ServiceLevelObjective{}, &ServiceLevelObjectiveList{}) +} diff --git a/apis/datadog/v1alpha1/zz_slocorrection_terraformed.go b/apis/datadog/v1alpha1/zz_slocorrection_terraformed.go new file mode 100755 index 0000000..0610432 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_slocorrection_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this SLOCorrection +func (mg *SLOCorrection) GetTerraformResourceType() string { + return "datadog_slo_correction" +} + +// GetConnectionDetailsMapping for this SLOCorrection +func (tr *SLOCorrection) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this SLOCorrection +func (tr *SLOCorrection) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this SLOCorrection +func (tr *SLOCorrection) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this SLOCorrection +func (tr *SLOCorrection) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this SLOCorrection +func (tr *SLOCorrection) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this SLOCorrection +func (tr *SLOCorrection) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this SLOCorrection +func (tr *SLOCorrection) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this SLOCorrection +func (tr *SLOCorrection) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this SLOCorrection using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *SLOCorrection) LateInitialize(attrs []byte) (bool, error) { + params := &SLOCorrectionParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *SLOCorrection) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_slocorrection_types.go b/apis/datadog/v1alpha1/zz_slocorrection_types.go new file mode 100755 index 0000000..169cea6 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_slocorrection_types.go @@ -0,0 +1,198 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type SLOCorrectionInitParameters struct { + + // (String) Category the SLO correction belongs to. Valid values are Scheduled Maintenance, Outside Business Hours, Deployment, Other. + // Category the SLO correction belongs to. Valid values are `Scheduled Maintenance`, `Outside Business Hours`, `Deployment`, `Other`. + Category *string `json:"category,omitempty" tf:"category,omitempty"` + + // (String) Description of the correction being made. + // Description of the correction being made. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Number) Length of time in seconds for a specified rrule recurring SLO correction + // Length of time in seconds for a specified `rrule` recurring SLO correction (required if specifying `rrule`) + Duration *float64 `json:"duration,omitempty" tf:"duration,omitempty"` + + // (Number) Ending time of the correction in epoch seconds. Required for one time corrections, but optional if rrule is specified + // Ending time of the correction in epoch seconds. Required for one time corrections, but optional if `rrule` is specified + End *float64 `json:"end,omitempty" tf:"end,omitempty"` + + // (String) Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are FREQ, INTERVAL, COUNT and UNTIL. + // Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, `COUNT` and `UNTIL`. + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // (String) ID of the SLO that this correction will be applied to. + // ID of the SLO that this correction will be applied to. + SLOID *string `json:"sloId,omitempty" tf:"slo_id,omitempty"` + + // (Number) Starting time of the correction in epoch seconds. + // Starting time of the correction in epoch seconds. + Start *float64 `json:"start,omitempty" tf:"start,omitempty"` + + // (String) The timezone to display in the UI for the correction times (defaults to "UTC") + // The timezone to display in the UI for the correction times (defaults to "UTC") + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type SLOCorrectionObservation struct { + + // (String) Category the SLO correction belongs to. Valid values are Scheduled Maintenance, Outside Business Hours, Deployment, Other. + // Category the SLO correction belongs to. Valid values are `Scheduled Maintenance`, `Outside Business Hours`, `Deployment`, `Other`. + Category *string `json:"category,omitempty" tf:"category,omitempty"` + + // (String) Description of the correction being made. + // Description of the correction being made. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Number) Length of time in seconds for a specified rrule recurring SLO correction + // Length of time in seconds for a specified `rrule` recurring SLO correction (required if specifying `rrule`) + Duration *float64 `json:"duration,omitempty" tf:"duration,omitempty"` + + // (Number) Ending time of the correction in epoch seconds. Required for one time corrections, but optional if rrule is specified + // Ending time of the correction in epoch seconds. Required for one time corrections, but optional if `rrule` is specified + End *float64 `json:"end,omitempty" tf:"end,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are FREQ, INTERVAL, COUNT and UNTIL. + // Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, `COUNT` and `UNTIL`. + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // (String) ID of the SLO that this correction will be applied to. + // ID of the SLO that this correction will be applied to. + SLOID *string `json:"sloId,omitempty" tf:"slo_id,omitempty"` + + // (Number) Starting time of the correction in epoch seconds. + // Starting time of the correction in epoch seconds. + Start *float64 `json:"start,omitempty" tf:"start,omitempty"` + + // (String) The timezone to display in the UI for the correction times (defaults to "UTC") + // The timezone to display in the UI for the correction times (defaults to "UTC") + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type SLOCorrectionParameters struct { + + // (String) Category the SLO correction belongs to. Valid values are Scheduled Maintenance, Outside Business Hours, Deployment, Other. + // Category the SLO correction belongs to. Valid values are `Scheduled Maintenance`, `Outside Business Hours`, `Deployment`, `Other`. + // +kubebuilder:validation:Optional + Category *string `json:"category,omitempty" tf:"category,omitempty"` + + // (String) Description of the correction being made. + // Description of the correction being made. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Number) Length of time in seconds for a specified rrule recurring SLO correction + // Length of time in seconds for a specified `rrule` recurring SLO correction (required if specifying `rrule`) + // +kubebuilder:validation:Optional + Duration *float64 `json:"duration,omitempty" tf:"duration,omitempty"` + + // (Number) Ending time of the correction in epoch seconds. Required for one time corrections, but optional if rrule is specified + // Ending time of the correction in epoch seconds. Required for one time corrections, but optional if `rrule` is specified + // +kubebuilder:validation:Optional + End *float64 `json:"end,omitempty" tf:"end,omitempty"` + + // (String) Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are FREQ, INTERVAL, COUNT and UNTIL. + // Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, `COUNT` and `UNTIL`. + // +kubebuilder:validation:Optional + Rrule *string `json:"rrule,omitempty" tf:"rrule,omitempty"` + + // (String) ID of the SLO that this correction will be applied to. + // ID of the SLO that this correction will be applied to. + // +kubebuilder:validation:Optional + SLOID *string `json:"sloId,omitempty" tf:"slo_id,omitempty"` + + // (Number) Starting time of the correction in epoch seconds. + // Starting time of the correction in epoch seconds. + // +kubebuilder:validation:Optional + Start *float64 `json:"start,omitempty" tf:"start,omitempty"` + + // (String) The timezone to display in the UI for the correction times (defaults to "UTC") + // The timezone to display in the UI for the correction times (defaults to "UTC") + // +kubebuilder:validation:Optional + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +// SLOCorrectionSpec defines the desired state of SLOCorrection +type SLOCorrectionSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider SLOCorrectionParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider SLOCorrectionInitParameters `json:"initProvider,omitempty"` +} + +// SLOCorrectionStatus defines the observed state of SLOCorrection. +type SLOCorrectionStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider SLOCorrectionObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// SLOCorrection is the Schema for the SLOCorrections API. Resource for interacting with the slo_correction API. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type SLOCorrection struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.category) || (has(self.initProvider) && has(self.initProvider.category))",message="spec.forProvider.category is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.sloId) || (has(self.initProvider) && has(self.initProvider.sloId))",message="spec.forProvider.sloId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.start) || (has(self.initProvider) && has(self.initProvider.start))",message="spec.forProvider.start is a required parameter" + Spec SLOCorrectionSpec `json:"spec"` + Status SLOCorrectionStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// SLOCorrectionList contains a list of SLOCorrections +type SLOCorrectionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []SLOCorrection `json:"items"` +} + +// Repository type metadata. +var ( + SLOCorrection_Kind = "SLOCorrection" + SLOCorrection_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SLOCorrection_Kind}.String() + SLOCorrection_KindAPIVersion = SLOCorrection_Kind + "." + CRDGroupVersion.String() + SLOCorrection_GroupVersionKind = CRDGroupVersion.WithKind(SLOCorrection_Kind) +) + +func init() { + SchemeBuilder.Register(&SLOCorrection{}, &SLOCorrectionList{}) +} diff --git a/apis/datadog/v1alpha1/zz_spansmetric_terraformed.go b/apis/datadog/v1alpha1/zz_spansmetric_terraformed.go new file mode 100755 index 0000000..2543160 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_spansmetric_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this SpansMetric +func (mg *SpansMetric) GetTerraformResourceType() string { + return "datadog_spans_metric" +} + +// GetConnectionDetailsMapping for this SpansMetric +func (tr *SpansMetric) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this SpansMetric +func (tr *SpansMetric) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this SpansMetric +func (tr *SpansMetric) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this SpansMetric +func (tr *SpansMetric) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this SpansMetric +func (tr *SpansMetric) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this SpansMetric +func (tr *SpansMetric) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this SpansMetric +func (tr *SpansMetric) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this SpansMetric +func (tr *SpansMetric) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this SpansMetric using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *SpansMetric) LateInitialize(attrs []byte) (bool, error) { + params := &SpansMetricParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *SpansMetric) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_spansmetric_types.go b/apis/datadog/v1alpha1/zz_spansmetric_types.go new file mode 100755 index 0000000..6e807ad --- /dev/null +++ b/apis/datadog/v1alpha1/zz_spansmetric_types.go @@ -0,0 +1,241 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type FilterInitParameters struct { + + // following the span search syntax. Defaults to "*". + // The search query - following the span search syntax. Defaults to `"*"`. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterObservation struct { + + // following the span search syntax. Defaults to "*". + // The search query - following the span search syntax. Defaults to `"*"`. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterParameters struct { + + // following the span search syntax. Defaults to "*". + // The search query - following the span search syntax. Defaults to `"*"`. + // +kubebuilder:validation:Optional + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type SpansMetricComputeInitParameters struct { + + // (String) The type of aggregation to use. This field can't be updated after creation. + // The type of aggregation to use. This field can't be updated after creation. + AggregationType *string `json:"aggregationType,omitempty" tf:"aggregation_type,omitempty"` + + // (Boolean) Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the aggregation_type is distribution. + // Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the `aggregation_type` is `distribution`. + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the span-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + Path *string `json:"path,omitempty" tf:"path,omitempty"` +} + +type SpansMetricComputeObservation struct { + + // (String) The type of aggregation to use. This field can't be updated after creation. + // The type of aggregation to use. This field can't be updated after creation. + AggregationType *string `json:"aggregationType,omitempty" tf:"aggregation_type,omitempty"` + + // (Boolean) Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the aggregation_type is distribution. + // Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the `aggregation_type` is `distribution`. + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the span-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + Path *string `json:"path,omitempty" tf:"path,omitempty"` +} + +type SpansMetricComputeParameters struct { + + // (String) The type of aggregation to use. This field can't be updated after creation. + // The type of aggregation to use. This field can't be updated after creation. + // +kubebuilder:validation:Optional + AggregationType *string `json:"aggregationType" tf:"aggregation_type,omitempty"` + + // (Boolean) Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the aggregation_type is distribution. + // Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the `aggregation_type` is `distribution`. + // +kubebuilder:validation:Optional + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the span-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // +kubebuilder:validation:Optional + Path *string `json:"path,omitempty" tf:"path,omitempty"` +} + +type SpansMetricGroupByInitParameters struct { + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the span-based metric will be aggregated over. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Eventual name of the tag that gets created. By default, the path attribute is used as the tag name. + // Eventual name of the tag that gets created. By default, the path attribute is used as the tag name. + TagName *string `json:"tagName,omitempty" tf:"tag_name,omitempty"` +} + +type SpansMetricGroupByObservation struct { + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the span-based metric will be aggregated over. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Eventual name of the tag that gets created. By default, the path attribute is used as the tag name. + // Eventual name of the tag that gets created. By default, the path attribute is used as the tag name. + TagName *string `json:"tagName,omitempty" tf:"tag_name,omitempty"` +} + +type SpansMetricGroupByParameters struct { + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the span-based metric will be aggregated over. + // +kubebuilder:validation:Optional + Path *string `json:"path" tf:"path,omitempty"` + + // (String) Eventual name of the tag that gets created. By default, the path attribute is used as the tag name. + // Eventual name of the tag that gets created. By default, the path attribute is used as the tag name. + // +kubebuilder:validation:Optional + TagName *string `json:"tagName,omitempty" tf:"tag_name,omitempty"` +} + +type SpansMetricInitParameters struct { + + // (Block, Optional) (see below for nested schema) + Compute *SpansMetricComputeInitParameters `json:"compute,omitempty" tf:"compute,omitempty"` + + // (Block, Optional) (see below for nested schema) + Filter *FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block Set) (see below for nested schema) + GroupBy []SpansMetricGroupByInitParameters `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // based metric. This field can't be updated after creation. + // The name of the span-based metric. This field can't be updated after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type SpansMetricObservation struct { + + // (Block, Optional) (see below for nested schema) + Compute *SpansMetricComputeObservation `json:"compute,omitempty" tf:"compute,omitempty"` + + // (Block, Optional) (see below for nested schema) + Filter *FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block Set) (see below for nested schema) + GroupBy []SpansMetricGroupByObservation `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // based metric. This field can't be updated after creation. + // The name of the span-based metric. This field can't be updated after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type SpansMetricParameters struct { + + // (Block, Optional) (see below for nested schema) + // +kubebuilder:validation:Optional + Compute *SpansMetricComputeParameters `json:"compute,omitempty" tf:"compute,omitempty"` + + // (Block, Optional) (see below for nested schema) + // +kubebuilder:validation:Optional + Filter *FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block Set) (see below for nested schema) + // +kubebuilder:validation:Optional + GroupBy []SpansMetricGroupByParameters `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // based metric. This field can't be updated after creation. + // The name of the span-based metric. This field can't be updated after creation. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// SpansMetricSpec defines the desired state of SpansMetric +type SpansMetricSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider SpansMetricParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider SpansMetricInitParameters `json:"initProvider,omitempty"` +} + +// SpansMetricStatus defines the observed state of SpansMetric. +type SpansMetricStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider SpansMetricObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// SpansMetric is the Schema for the SpansMetrics API. Provides a Datadog SpansMetric resource. This can be used to create and manage Datadog spans_metric. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type SpansMetric struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.compute) || (has(self.initProvider) && has(self.initProvider.compute))",message="spec.forProvider.compute is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec SpansMetricSpec `json:"spec"` + Status SpansMetricStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// SpansMetricList contains a list of SpansMetrics +type SpansMetricList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []SpansMetric `json:"items"` +} + +// Repository type metadata. +var ( + SpansMetric_Kind = "SpansMetric" + SpansMetric_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SpansMetric_Kind}.String() + SpansMetric_KindAPIVersion = SpansMetric_Kind + "." + CRDGroupVersion.String() + SpansMetric_GroupVersionKind = CRDGroupVersion.WithKind(SpansMetric_Kind) +) + +func init() { + SchemeBuilder.Register(&SpansMetric{}, &SpansMetricList{}) +} diff --git a/apis/datadog/v1alpha1/zz_team_terraformed.go b/apis/datadog/v1alpha1/zz_team_terraformed.go new file mode 100755 index 0000000..d8bc31e --- /dev/null +++ b/apis/datadog/v1alpha1/zz_team_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Team +func (mg *Team) GetTerraformResourceType() string { + return "datadog_team" +} + +// GetConnectionDetailsMapping for this Team +func (tr *Team) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Team +func (tr *Team) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Team +func (tr *Team) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Team +func (tr *Team) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Team +func (tr *Team) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Team +func (tr *Team) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Team +func (tr *Team) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Team +func (tr *Team) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Team using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Team) LateInitialize(attrs []byte) (bool, error) { + params := &TeamParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Team) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_team_types.go b/apis/datadog/v1alpha1/zz_team_types.go new file mode 100755 index 0000000..473bd20 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_team_types.go @@ -0,0 +1,145 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type TeamInitParameters struct { + + // form markdown description/content for the team's homepage. + // Free-form markdown description/content for the team's homepage. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The team's identifier + // The team's identifier + Handle *string `json:"handle,omitempty" tf:"handle,omitempty"` + + // (String) The name of the team. + // The name of the team. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type TeamObservation struct { + + // form markdown description/content for the team's homepage. + // Free-form markdown description/content for the team's homepage. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The team's identifier + // The team's identifier + Handle *string `json:"handle,omitempty" tf:"handle,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Number) The number of links belonging to the team. + // The number of links belonging to the team. + LinkCount *float64 `json:"linkCount,omitempty" tf:"link_count,omitempty"` + + // (String) The name of the team. + // The name of the team. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) A brief summary of the team, derived from the description. + // A brief summary of the team, derived from the `description`. + Summary *string `json:"summary,omitempty" tf:"summary,omitempty"` + + // (Number) The number of users belonging to the team. + // The number of users belonging to the team. + UserCount *float64 `json:"userCount,omitempty" tf:"user_count,omitempty"` +} + +type TeamParameters struct { + + // form markdown description/content for the team's homepage. + // Free-form markdown description/content for the team's homepage. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The team's identifier + // The team's identifier + // +kubebuilder:validation:Optional + Handle *string `json:"handle,omitempty" tf:"handle,omitempty"` + + // (String) The name of the team. + // The name of the team. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// TeamSpec defines the desired state of Team +type TeamSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider TeamParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider TeamInitParameters `json:"initProvider,omitempty"` +} + +// TeamStatus defines the observed state of Team. +type TeamStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider TeamObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Team is the Schema for the Teams API. Provides a Datadog Team resource. This can be used to create and manage Datadog team. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Team struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.description) || (has(self.initProvider) && has(self.initProvider.description))",message="spec.forProvider.description is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.handle) || (has(self.initProvider) && has(self.initProvider.handle))",message="spec.forProvider.handle is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec TeamSpec `json:"spec"` + Status TeamStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// TeamList contains a list of Teams +type TeamList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Team `json:"items"` +} + +// Repository type metadata. +var ( + Team_Kind = "Team" + Team_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Team_Kind}.String() + Team_KindAPIVersion = Team_Kind + "." + CRDGroupVersion.String() + Team_GroupVersionKind = CRDGroupVersion.WithKind(Team_Kind) +) + +func init() { + SchemeBuilder.Register(&Team{}, &TeamList{}) +} diff --git a/apis/datadog/v1alpha1/zz_teamlink_terraformed.go b/apis/datadog/v1alpha1/zz_teamlink_terraformed.go new file mode 100755 index 0000000..fd313e3 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_teamlink_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this TeamLink +func (mg *TeamLink) GetTerraformResourceType() string { + return "datadog_team_link" +} + +// GetConnectionDetailsMapping for this TeamLink +func (tr *TeamLink) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this TeamLink +func (tr *TeamLink) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this TeamLink +func (tr *TeamLink) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this TeamLink +func (tr *TeamLink) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this TeamLink +func (tr *TeamLink) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this TeamLink +func (tr *TeamLink) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this TeamLink +func (tr *TeamLink) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this TeamLink +func (tr *TeamLink) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this TeamLink using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *TeamLink) LateInitialize(attrs []byte) (bool, error) { + params := &TeamLinkParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *TeamLink) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_teamlink_types.go b/apis/datadog/v1alpha1/zz_teamlink_types.go new file mode 100755 index 0000000..627b37f --- /dev/null +++ b/apis/datadog/v1alpha1/zz_teamlink_types.go @@ -0,0 +1,146 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type TeamLinkInitParameters struct { + + // (String) The link's label. + // The link's label. + Label *string `json:"label,omitempty" tf:"label,omitempty"` + + // (Number) The link's position, used to sort links for the team. + // The link's position, used to sort links for the team. + Position *float64 `json:"position,omitempty" tf:"position,omitempty"` + + // (String) ID of the team the link is associated with. + // ID of the team the link is associated with. + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The URL for the link. + // The URL for the link. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type TeamLinkObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The link's label. + // The link's label. + Label *string `json:"label,omitempty" tf:"label,omitempty"` + + // (Number) The link's position, used to sort links for the team. + // The link's position, used to sort links for the team. + Position *float64 `json:"position,omitempty" tf:"position,omitempty"` + + // (String) ID of the team the link is associated with. + // ID of the team the link is associated with. + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The URL for the link. + // The URL for the link. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type TeamLinkParameters struct { + + // (String) The link's label. + // The link's label. + // +kubebuilder:validation:Optional + Label *string `json:"label,omitempty" tf:"label,omitempty"` + + // (Number) The link's position, used to sort links for the team. + // The link's position, used to sort links for the team. + // +kubebuilder:validation:Optional + Position *float64 `json:"position,omitempty" tf:"position,omitempty"` + + // (String) ID of the team the link is associated with. + // ID of the team the link is associated with. + // +kubebuilder:validation:Optional + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The URL for the link. + // The URL for the link. + // +kubebuilder:validation:Optional + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +// TeamLinkSpec defines the desired state of TeamLink +type TeamLinkSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider TeamLinkParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider TeamLinkInitParameters `json:"initProvider,omitempty"` +} + +// TeamLinkStatus defines the observed state of TeamLink. +type TeamLinkStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider TeamLinkObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// TeamLink is the Schema for the TeamLinks API. Provides a Datadog TeamLink resource. This can be used to create and manage Datadog team_link. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type TeamLink struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.label) || (has(self.initProvider) && has(self.initProvider.label))",message="spec.forProvider.label is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.teamId) || (has(self.initProvider) && has(self.initProvider.teamId))",message="spec.forProvider.teamId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.url) || (has(self.initProvider) && has(self.initProvider.url))",message="spec.forProvider.url is a required parameter" + Spec TeamLinkSpec `json:"spec"` + Status TeamLinkStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// TeamLinkList contains a list of TeamLinks +type TeamLinkList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []TeamLink `json:"items"` +} + +// Repository type metadata. +var ( + TeamLink_Kind = "TeamLink" + TeamLink_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: TeamLink_Kind}.String() + TeamLink_KindAPIVersion = TeamLink_Kind + "." + CRDGroupVersion.String() + TeamLink_GroupVersionKind = CRDGroupVersion.WithKind(TeamLink_Kind) +) + +func init() { + SchemeBuilder.Register(&TeamLink{}, &TeamLinkList{}) +} diff --git a/apis/datadog/v1alpha1/zz_teammembership_terraformed.go b/apis/datadog/v1alpha1/zz_teammembership_terraformed.go new file mode 100755 index 0000000..f9b76ba --- /dev/null +++ b/apis/datadog/v1alpha1/zz_teammembership_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this TeamMembership +func (mg *TeamMembership) GetTerraformResourceType() string { + return "datadog_team_membership" +} + +// GetConnectionDetailsMapping for this TeamMembership +func (tr *TeamMembership) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this TeamMembership +func (tr *TeamMembership) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this TeamMembership +func (tr *TeamMembership) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this TeamMembership +func (tr *TeamMembership) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this TeamMembership +func (tr *TeamMembership) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this TeamMembership +func (tr *TeamMembership) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this TeamMembership +func (tr *TeamMembership) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this TeamMembership +func (tr *TeamMembership) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this TeamMembership using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *TeamMembership) LateInitialize(attrs []byte) (bool, error) { + params := &TeamMembershipParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *TeamMembership) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_teammembership_types.go b/apis/datadog/v1alpha1/zz_teammembership_types.go new file mode 100755 index 0000000..8fbb75e --- /dev/null +++ b/apis/datadog/v1alpha1/zz_teammembership_types.go @@ -0,0 +1,132 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type TeamMembershipInitParameters struct { + + // (String) The user's role within the team. Valid values are admin. + // The user's role within the team. Valid values are `admin`. + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + // (String) ID of the team the team membership is associated with. + // ID of the team the team membership is associated with. + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The ID of the user. + // The ID of the user. + UserID *string `json:"userId,omitempty" tf:"user_id,omitempty"` +} + +type TeamMembershipObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The user's role within the team. Valid values are admin. + // The user's role within the team. Valid values are `admin`. + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + // (String) ID of the team the team membership is associated with. + // ID of the team the team membership is associated with. + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The ID of the user. + // The ID of the user. + UserID *string `json:"userId,omitempty" tf:"user_id,omitempty"` +} + +type TeamMembershipParameters struct { + + // (String) The user's role within the team. Valid values are admin. + // The user's role within the team. Valid values are `admin`. + // +kubebuilder:validation:Optional + Role *string `json:"role,omitempty" tf:"role,omitempty"` + + // (String) ID of the team the team membership is associated with. + // ID of the team the team membership is associated with. + // +kubebuilder:validation:Optional + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The ID of the user. + // The ID of the user. + // +kubebuilder:validation:Optional + UserID *string `json:"userId,omitempty" tf:"user_id,omitempty"` +} + +// TeamMembershipSpec defines the desired state of TeamMembership +type TeamMembershipSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider TeamMembershipParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider TeamMembershipInitParameters `json:"initProvider,omitempty"` +} + +// TeamMembershipStatus defines the observed state of TeamMembership. +type TeamMembershipStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider TeamMembershipObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// TeamMembership is the Schema for the TeamMemberships API. Provides a Datadog TeamMembership resource. This can be used to create and manage Datadog team_membership. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type TeamMembership struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.teamId) || (has(self.initProvider) && has(self.initProvider.teamId))",message="spec.forProvider.teamId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.userId) || (has(self.initProvider) && has(self.initProvider.userId))",message="spec.forProvider.userId is a required parameter" + Spec TeamMembershipSpec `json:"spec"` + Status TeamMembershipStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// TeamMembershipList contains a list of TeamMemberships +type TeamMembershipList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []TeamMembership `json:"items"` +} + +// Repository type metadata. +var ( + TeamMembership_Kind = "TeamMembership" + TeamMembership_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: TeamMembership_Kind}.String() + TeamMembership_KindAPIVersion = TeamMembership_Kind + "." + CRDGroupVersion.String() + TeamMembership_GroupVersionKind = CRDGroupVersion.WithKind(TeamMembership_Kind) +) + +func init() { + SchemeBuilder.Register(&TeamMembership{}, &TeamMembershipList{}) +} diff --git a/apis/datadog/v1alpha1/zz_teampermissionsetting_terraformed.go b/apis/datadog/v1alpha1/zz_teampermissionsetting_terraformed.go new file mode 100755 index 0000000..c4f4142 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_teampermissionsetting_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this TeamPermissionSetting +func (mg *TeamPermissionSetting) GetTerraformResourceType() string { + return "datadog_team_permission_setting" +} + +// GetConnectionDetailsMapping for this TeamPermissionSetting +func (tr *TeamPermissionSetting) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this TeamPermissionSetting +func (tr *TeamPermissionSetting) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this TeamPermissionSetting +func (tr *TeamPermissionSetting) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this TeamPermissionSetting +func (tr *TeamPermissionSetting) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this TeamPermissionSetting +func (tr *TeamPermissionSetting) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this TeamPermissionSetting +func (tr *TeamPermissionSetting) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this TeamPermissionSetting +func (tr *TeamPermissionSetting) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this TeamPermissionSetting +func (tr *TeamPermissionSetting) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this TeamPermissionSetting using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *TeamPermissionSetting) LateInitialize(attrs []byte) (bool, error) { + params := &TeamPermissionSettingParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *TeamPermissionSetting) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_teampermissionsetting_types.go b/apis/datadog/v1alpha1/zz_teampermissionsetting_types.go new file mode 100755 index 0000000..e64cc62 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_teampermissionsetting_types.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type TeamPermissionSettingInitParameters struct { + + // (String) The identifier for the action. Valid values are manage_membership, edit. + // The identifier for the action. Valid values are `manage_membership`, `edit`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (String) ID of the team the team permission setting is associated with. + // ID of the team the team permission setting is associated with. + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The action value. Valid values are admins, members, organization, user_access_manage, teams_manage. + // The action value. Valid values are `admins`, `members`, `organization`, `user_access_manage`, `teams_manage`. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TeamPermissionSettingObservation struct { + + // (String) The identifier for the action. Valid values are manage_membership, edit. + // The identifier for the action. Valid values are `manage_membership`, `edit`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) ID of the team the team permission setting is associated with. + // ID of the team the team permission setting is associated with. + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The action value. Valid values are admins, members, organization, user_access_manage, teams_manage. + // The action value. Valid values are `admins`, `members`, `organization`, `user_access_manage`, `teams_manage`. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TeamPermissionSettingParameters struct { + + // (String) The identifier for the action. Valid values are manage_membership, edit. + // The identifier for the action. Valid values are `manage_membership`, `edit`. + // +kubebuilder:validation:Optional + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (String) ID of the team the team permission setting is associated with. + // ID of the team the team permission setting is associated with. + // +kubebuilder:validation:Optional + TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + + // (String) The action value. Valid values are admins, members, organization, user_access_manage, teams_manage. + // The action value. Valid values are `admins`, `members`, `organization`, `user_access_manage`, `teams_manage`. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +// TeamPermissionSettingSpec defines the desired state of TeamPermissionSetting +type TeamPermissionSettingSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider TeamPermissionSettingParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider TeamPermissionSettingInitParameters `json:"initProvider,omitempty"` +} + +// TeamPermissionSettingStatus defines the observed state of TeamPermissionSetting. +type TeamPermissionSettingStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider TeamPermissionSettingObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// TeamPermissionSetting is the Schema for the TeamPermissionSettings API. Provides a Datadog TeamPermissionSetting resource. This can be used to manage Datadog teampermissionsetting. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type TeamPermissionSetting struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.action) || (has(self.initProvider) && has(self.initProvider.action))",message="spec.forProvider.action is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.teamId) || (has(self.initProvider) && has(self.initProvider.teamId))",message="spec.forProvider.teamId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.value) || (has(self.initProvider) && has(self.initProvider.value))",message="spec.forProvider.value is a required parameter" + Spec TeamPermissionSettingSpec `json:"spec"` + Status TeamPermissionSettingStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// TeamPermissionSettingList contains a list of TeamPermissionSettings +type TeamPermissionSettingList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []TeamPermissionSetting `json:"items"` +} + +// Repository type metadata. +var ( + TeamPermissionSetting_Kind = "TeamPermissionSetting" + TeamPermissionSetting_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: TeamPermissionSetting_Kind}.String() + TeamPermissionSetting_KindAPIVersion = TeamPermissionSetting_Kind + "." + CRDGroupVersion.String() + TeamPermissionSetting_GroupVersionKind = CRDGroupVersion.WithKind(TeamPermissionSetting_Kind) +) + +func init() { + SchemeBuilder.Register(&TeamPermissionSetting{}, &TeamPermissionSettingList{}) +} diff --git a/apis/datadog/v1alpha1/zz_user_terraformed.go b/apis/datadog/v1alpha1/zz_user_terraformed.go new file mode 100755 index 0000000..14b9adb --- /dev/null +++ b/apis/datadog/v1alpha1/zz_user_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this User +func (mg *User) GetTerraformResourceType() string { + return "datadog_user" +} + +// GetConnectionDetailsMapping for this User +func (tr *User) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this User +func (tr *User) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this User +func (tr *User) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this User +func (tr *User) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this User +func (tr *User) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this User +func (tr *User) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this User +func (tr *User) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this User +func (tr *User) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this User using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *User) LateInitialize(attrs []byte) (bool, error) { + params := &UserParameters_2{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *User) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_user_types.go b/apis/datadog/v1alpha1/zz_user_types.go new file mode 100755 index 0000000..ae5446e --- /dev/null +++ b/apis/datadog/v1alpha1/zz_user_types.go @@ -0,0 +1,168 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type UserInitParameters_2 struct { + + // (Boolean) Whether the user is disabled. Defaults to false. + // Whether the user is disabled. Defaults to `false`. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (String) Email address for user. + // Email address for user. + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) Name for user. + // Name for user. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) A list a role IDs to assign to the user. + // A list a role IDs to assign to the user. + // +listType=set + Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` + + // (Boolean) Whether an invitation email should be sent when the user is created. Defaults to true. + // Whether an invitation email should be sent when the user is created. Defaults to `true`. + SendUserInvitation *bool `json:"sendUserInvitation,omitempty" tf:"send_user_invitation,omitempty"` +} + +type UserObservation_2 struct { + + // (Boolean) Whether the user is disabled. Defaults to false. + // Whether the user is disabled. Defaults to `false`. + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (String) Email address for user. + // Email address for user. + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Name for user. + // Name for user. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) A list a role IDs to assign to the user. + // A list a role IDs to assign to the user. + // +listType=set + Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` + + // (Boolean) Whether an invitation email should be sent when the user is created. Defaults to true. + // Whether an invitation email should be sent when the user is created. Defaults to `true`. + SendUserInvitation *bool `json:"sendUserInvitation,omitempty" tf:"send_user_invitation,omitempty"` + + // (String) The ID of the user invitation that was sent when creating the user. + // The ID of the user invitation that was sent when creating the user. + UserInvitationID *string `json:"userInvitationId,omitempty" tf:"user_invitation_id,omitempty"` + + // (Boolean) Returns true if the user is verified. + // Returns `true` if the user is verified. + Verified *bool `json:"verified,omitempty" tf:"verified,omitempty"` +} + +type UserParameters_2 struct { + + // (Boolean) Whether the user is disabled. Defaults to false. + // Whether the user is disabled. Defaults to `false`. + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (String) Email address for user. + // Email address for user. + // +kubebuilder:validation:Optional + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) Name for user. + // Name for user. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) A list a role IDs to assign to the user. + // A list a role IDs to assign to the user. + // +kubebuilder:validation:Optional + // +listType=set + Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` + + // (Boolean) Whether an invitation email should be sent when the user is created. Defaults to true. + // Whether an invitation email should be sent when the user is created. Defaults to `true`. + // +kubebuilder:validation:Optional + SendUserInvitation *bool `json:"sendUserInvitation,omitempty" tf:"send_user_invitation,omitempty"` +} + +// UserSpec defines the desired state of User +type UserSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider UserParameters_2 `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider UserInitParameters_2 `json:"initProvider,omitempty"` +} + +// UserStatus defines the observed state of User. +type UserStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider UserObservation_2 `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// User is the Schema for the Users API. Provides a Datadog user resource. This can be used to create and manage Datadog users. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type User struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.email) || (has(self.initProvider) && has(self.initProvider.email))",message="spec.forProvider.email is a required parameter" + Spec UserSpec `json:"spec"` + Status UserStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// UserList contains a list of Users +type UserList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []User `json:"items"` +} + +// Repository type metadata. +var ( + User_Kind = "User" + User_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: User_Kind}.String() + User_KindAPIVersion = User_Kind + "." + CRDGroupVersion.String() + User_GroupVersionKind = CRDGroupVersion.WithKind(User_Kind) +) + +func init() { + SchemeBuilder.Register(&User{}, &UserList{}) +} diff --git a/apis/datadog/v1alpha1/zz_webhook_terraformed.go b/apis/datadog/v1alpha1/zz_webhook_terraformed.go new file mode 100755 index 0000000..d4d0768 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_webhook_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Webhook +func (mg *Webhook) GetTerraformResourceType() string { + return "datadog_webhook" +} + +// GetConnectionDetailsMapping for this Webhook +func (tr *Webhook) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Webhook +func (tr *Webhook) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Webhook +func (tr *Webhook) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Webhook +func (tr *Webhook) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Webhook +func (tr *Webhook) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Webhook +func (tr *Webhook) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Webhook +func (tr *Webhook) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Webhook +func (tr *Webhook) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Webhook using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Webhook) LateInitialize(attrs []byte) (bool, error) { + params := &WebhookParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Webhook) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_webhook_types.go b/apis/datadog/v1alpha1/zz_webhook_types.go new file mode 100755 index 0000000..6379edd --- /dev/null +++ b/apis/datadog/v1alpha1/zz_webhook_types.go @@ -0,0 +1,158 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type WebhookInitParameters struct { + + // (String) The headers attached to the webhook. + // The headers attached to the webhook. + CustomHeaders *string `json:"customHeaders,omitempty" tf:"custom_headers,omitempty"` + + // (String) Encoding type. Valid values are json, form. + // Encoding type. Valid values are `json`, `form`. + EncodeAs *string `json:"encodeAs,omitempty" tf:"encode_as,omitempty"` + + // (String) The name of the webhook. It corresponds with . + // The name of the webhook. It corresponds with ``. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The payload of the webhook. + // The payload of the webhook. + Payload *string `json:"payload,omitempty" tf:"payload,omitempty"` + + // (String) The URL of the webhook. + // The URL of the webhook. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type WebhookObservation struct { + + // (String) The headers attached to the webhook. + // The headers attached to the webhook. + CustomHeaders *string `json:"customHeaders,omitempty" tf:"custom_headers,omitempty"` + + // (String) Encoding type. Valid values are json, form. + // Encoding type. Valid values are `json`, `form`. + EncodeAs *string `json:"encodeAs,omitempty" tf:"encode_as,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the webhook. It corresponds with . + // The name of the webhook. It corresponds with ``. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The payload of the webhook. + // The payload of the webhook. + Payload *string `json:"payload,omitempty" tf:"payload,omitempty"` + + // (String) The URL of the webhook. + // The URL of the webhook. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type WebhookParameters struct { + + // (String) The headers attached to the webhook. + // The headers attached to the webhook. + // +kubebuilder:validation:Optional + CustomHeaders *string `json:"customHeaders,omitempty" tf:"custom_headers,omitempty"` + + // (String) Encoding type. Valid values are json, form. + // Encoding type. Valid values are `json`, `form`. + // +kubebuilder:validation:Optional + EncodeAs *string `json:"encodeAs,omitempty" tf:"encode_as,omitempty"` + + // (String) The name of the webhook. It corresponds with . + // The name of the webhook. It corresponds with ``. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The payload of the webhook. + // The payload of the webhook. + // +kubebuilder:validation:Optional + Payload *string `json:"payload,omitempty" tf:"payload,omitempty"` + + // (String) The URL of the webhook. + // The URL of the webhook. + // +kubebuilder:validation:Optional + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +// WebhookSpec defines the desired state of Webhook +type WebhookSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider WebhookParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider WebhookInitParameters `json:"initProvider,omitempty"` +} + +// WebhookStatus defines the observed state of Webhook. +type WebhookStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider WebhookObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Webhook is the Schema for the Webhooks API. Provides a Datadog webhook resource. This can be used to create and manage Datadog webhooks. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Webhook struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.url) || (has(self.initProvider) && has(self.initProvider.url))",message="spec.forProvider.url is a required parameter" + Spec WebhookSpec `json:"spec"` + Status WebhookStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// WebhookList contains a list of Webhooks +type WebhookList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Webhook `json:"items"` +} + +// Repository type metadata. +var ( + Webhook_Kind = "Webhook" + Webhook_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Webhook_Kind}.String() + Webhook_KindAPIVersion = Webhook_Kind + "." + CRDGroupVersion.String() + Webhook_GroupVersionKind = CRDGroupVersion.WithKind(Webhook_Kind) +) + +func init() { + SchemeBuilder.Register(&Webhook{}, &WebhookList{}) +} diff --git a/apis/datadog/v1alpha1/zz_webhookcustomvariable_terraformed.go b/apis/datadog/v1alpha1/zz_webhookcustomvariable_terraformed.go new file mode 100755 index 0000000..ce91f97 --- /dev/null +++ b/apis/datadog/v1alpha1/zz_webhookcustomvariable_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this WebhookCustomVariable +func (mg *WebhookCustomVariable) GetTerraformResourceType() string { + return "datadog_webhook_custom_variable" +} + +// GetConnectionDetailsMapping for this WebhookCustomVariable +func (tr *WebhookCustomVariable) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"value": "spec.forProvider.valueSecretRef"} +} + +// GetObservation of this WebhookCustomVariable +func (tr *WebhookCustomVariable) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this WebhookCustomVariable +func (tr *WebhookCustomVariable) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this WebhookCustomVariable +func (tr *WebhookCustomVariable) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this WebhookCustomVariable +func (tr *WebhookCustomVariable) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this WebhookCustomVariable +func (tr *WebhookCustomVariable) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this WebhookCustomVariable +func (tr *WebhookCustomVariable) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this WebhookCustomVariable +func (tr *WebhookCustomVariable) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this WebhookCustomVariable using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *WebhookCustomVariable) LateInitialize(attrs []byte) (bool, error) { + params := &WebhookCustomVariableParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *WebhookCustomVariable) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_webhookcustomvariable_types.go b/apis/datadog/v1alpha1/zz_webhookcustomvariable_types.go new file mode 100755 index 0000000..24caaaa --- /dev/null +++ b/apis/datadog/v1alpha1/zz_webhookcustomvariable_types.go @@ -0,0 +1,125 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type WebhookCustomVariableInitParameters struct { + + // (Boolean) Whether the custom variable is secret or not. + // Whether the custom variable is secret or not. + IsSecret *bool `json:"isSecret,omitempty" tf:"is_secret,omitempty"` + + // (String) The name of the variable. It corresponds with . + // The name of the variable. It corresponds with ``. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type WebhookCustomVariableObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) Whether the custom variable is secret or not. + // Whether the custom variable is secret or not. + IsSecret *bool `json:"isSecret,omitempty" tf:"is_secret,omitempty"` + + // (String) The name of the variable. It corresponds with . + // The name of the variable. It corresponds with ``. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type WebhookCustomVariableParameters struct { + + // (Boolean) Whether the custom variable is secret or not. + // Whether the custom variable is secret or not. + // +kubebuilder:validation:Optional + IsSecret *bool `json:"isSecret,omitempty" tf:"is_secret,omitempty"` + + // (String) The name of the variable. It corresponds with . + // The name of the variable. It corresponds with ``. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String, Sensitive) The value of the custom variable. + // The value of the custom variable. + // +kubebuilder:validation:Optional + ValueSecretRef v1.SecretKeySelector `json:"valueSecretRef" tf:"-"` +} + +// WebhookCustomVariableSpec defines the desired state of WebhookCustomVariable +type WebhookCustomVariableSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider WebhookCustomVariableParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider WebhookCustomVariableInitParameters `json:"initProvider,omitempty"` +} + +// WebhookCustomVariableStatus defines the observed state of WebhookCustomVariable. +type WebhookCustomVariableStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider WebhookCustomVariableObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// WebhookCustomVariable is the Schema for the WebhookCustomVariables API. Provides a Datadog webhooks custom variable resource. This can be used to create and manage Datadog webhooks custom variables. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type WebhookCustomVariable struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.isSecret) || (has(self.initProvider) && has(self.initProvider.isSecret))",message="spec.forProvider.isSecret is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.valueSecretRef)",message="spec.forProvider.valueSecretRef is a required parameter" + Spec WebhookCustomVariableSpec `json:"spec"` + Status WebhookCustomVariableStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// WebhookCustomVariableList contains a list of WebhookCustomVariables +type WebhookCustomVariableList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []WebhookCustomVariable `json:"items"` +} + +// Repository type metadata. +var ( + WebhookCustomVariable_Kind = "WebhookCustomVariable" + WebhookCustomVariable_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: WebhookCustomVariable_Kind}.String() + WebhookCustomVariable_KindAPIVersion = WebhookCustomVariable_Kind + "." + CRDGroupVersion.String() + WebhookCustomVariable_GroupVersionKind = CRDGroupVersion.WithKind(WebhookCustomVariable_Kind) +) + +func init() { + SchemeBuilder.Register(&WebhookCustomVariable{}, &WebhookCustomVariableList{}) +} diff --git a/apis/integration/v1alpha1/zz_aws_terraformed.go b/apis/integration/v1alpha1/zz_aws_terraformed.go new file mode 100755 index 0000000..af7eb34 --- /dev/null +++ b/apis/integration/v1alpha1/zz_aws_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this AWS +func (mg *AWS) GetTerraformResourceType() string { + return "datadog_integration_aws" +} + +// GetConnectionDetailsMapping for this AWS +func (tr *AWS) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"secret_access_key": "spec.forProvider.secretAccessKeySecretRef"} +} + +// GetObservation of this AWS +func (tr *AWS) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this AWS +func (tr *AWS) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this AWS +func (tr *AWS) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this AWS +func (tr *AWS) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this AWS +func (tr *AWS) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this AWS +func (tr *AWS) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this AWS +func (tr *AWS) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this AWS using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *AWS) LateInitialize(attrs []byte) (bool, error) { + params := &AWSParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *AWS) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_aws_types.go b/apis/integration/v1alpha1/zz_aws_types.go new file mode 100755 index 0000000..5a47bba --- /dev/null +++ b/apis/integration/v1alpha1/zz_aws_types.go @@ -0,0 +1,236 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AWSInitParameters struct { + + // (String) Your AWS access key ID. Only required if your AWS account is a GovCloud or China account. + // Your AWS access key ID. Only required if your AWS account is a GovCloud or China account. + AccessKeyID *string `json:"accessKeyId,omitempty" tf:"access_key_id,omitempty"` + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Map of Boolean) Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the available namespace rules API endpoint. + // Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules). + // +mapType=granular + AccountSpecificNamespaceRules map[string]*bool `json:"accountSpecificNamespaceRules,omitempty" tf:"account_specific_namespace_rules,omitempty"` + + // (String) Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection. + // Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection. + CspmResourceCollectionEnabled *string `json:"cspmResourceCollectionEnabled,omitempty" tf:"cspm_resource_collection_enabled,omitempty"` + + // (Set of String) An array of AWS regions to exclude from metrics collection. + // An array of AWS regions to exclude from metrics collection. + // +listType=set + ExcludedRegions []*string `json:"excludedRegions,omitempty" tf:"excluded_regions,omitempty"` + + // type:c1.*,!region:us-east-1. + // Array of EC2 tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from EC2. Wildcards, such as `?` (for single characters) and `*` (for multiple characters) can also be used. Only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. Host matching a given tag can also be excluded by adding `!` before the tag. e.x. `env:production,instance-type:c1.*,!region:us-east-1`. + FilterTags []*string `json:"filterTags,omitempty" tf:"filter_tags,omitempty"` + + // (List of String) Array of tags (in the form key:value) to add to all hosts and metrics reporting through this integration. + // Array of tags (in the form `key:value`) to add to all hosts and metrics reporting through this integration. + HostTags []*string `json:"hostTags,omitempty" tf:"host_tags,omitempty"` + + // (String) Whether Datadog collects metrics for this AWS account. + // Whether Datadog collects metrics for this AWS account. + MetricsCollectionEnabled *string `json:"metricsCollectionEnabled,omitempty" tf:"metrics_collection_enabled,omitempty"` + + // (String) Whether Datadog collects a standard set of resources from your AWS account. + // Whether Datadog collects a standard set of resources from your AWS account. + ResourceCollectionEnabled *string `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` + + // (String) Your Datadog role delegation name. + // Your Datadog role delegation name. + RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` +} + +type AWSObservation struct { + + // (String) Your AWS access key ID. Only required if your AWS account is a GovCloud or China account. + // Your AWS access key ID. Only required if your AWS account is a GovCloud or China account. + AccessKeyID *string `json:"accessKeyId,omitempty" tf:"access_key_id,omitempty"` + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Map of Boolean) Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the available namespace rules API endpoint. + // Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules). + // +mapType=granular + AccountSpecificNamespaceRules map[string]*bool `json:"accountSpecificNamespaceRules,omitempty" tf:"account_specific_namespace_rules,omitempty"` + + // (String) Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection. + // Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection. + CspmResourceCollectionEnabled *string `json:"cspmResourceCollectionEnabled,omitempty" tf:"cspm_resource_collection_enabled,omitempty"` + + // (Set of String) An array of AWS regions to exclude from metrics collection. + // An array of AWS regions to exclude from metrics collection. + // +listType=set + ExcludedRegions []*string `json:"excludedRegions,omitempty" tf:"excluded_regions,omitempty"` + + // (String) AWS External ID. + // AWS External ID. + ExternalID *string `json:"externalId,omitempty" tf:"external_id,omitempty"` + + // type:c1.*,!region:us-east-1. + // Array of EC2 tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from EC2. Wildcards, such as `?` (for single characters) and `*` (for multiple characters) can also be used. Only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. Host matching a given tag can also be excluded by adding `!` before the tag. e.x. `env:production,instance-type:c1.*,!region:us-east-1`. + FilterTags []*string `json:"filterTags,omitempty" tf:"filter_tags,omitempty"` + + // (List of String) Array of tags (in the form key:value) to add to all hosts and metrics reporting through this integration. + // Array of tags (in the form `key:value`) to add to all hosts and metrics reporting through this integration. + HostTags []*string `json:"hostTags,omitempty" tf:"host_tags,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Whether Datadog collects metrics for this AWS account. + // Whether Datadog collects metrics for this AWS account. + MetricsCollectionEnabled *string `json:"metricsCollectionEnabled,omitempty" tf:"metrics_collection_enabled,omitempty"` + + // (String) Whether Datadog collects a standard set of resources from your AWS account. + // Whether Datadog collects a standard set of resources from your AWS account. + ResourceCollectionEnabled *string `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` + + // (String) Your Datadog role delegation name. + // Your Datadog role delegation name. + RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` +} + +type AWSParameters struct { + + // (String) Your AWS access key ID. Only required if your AWS account is a GovCloud or China account. + // Your AWS access key ID. Only required if your AWS account is a GovCloud or China account. + // +kubebuilder:validation:Optional + AccessKeyID *string `json:"accessKeyId,omitempty" tf:"access_key_id,omitempty"` + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Map of Boolean) Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the available namespace rules API endpoint. + // Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules). + // +kubebuilder:validation:Optional + // +mapType=granular + AccountSpecificNamespaceRules map[string]*bool `json:"accountSpecificNamespaceRules,omitempty" tf:"account_specific_namespace_rules,omitempty"` + + // (String) Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection. + // Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection. + // +kubebuilder:validation:Optional + CspmResourceCollectionEnabled *string `json:"cspmResourceCollectionEnabled,omitempty" tf:"cspm_resource_collection_enabled,omitempty"` + + // (Set of String) An array of AWS regions to exclude from metrics collection. + // An array of AWS regions to exclude from metrics collection. + // +kubebuilder:validation:Optional + // +listType=set + ExcludedRegions []*string `json:"excludedRegions,omitempty" tf:"excluded_regions,omitempty"` + + // type:c1.*,!region:us-east-1. + // Array of EC2 tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from EC2. Wildcards, such as `?` (for single characters) and `*` (for multiple characters) can also be used. Only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. Host matching a given tag can also be excluded by adding `!` before the tag. e.x. `env:production,instance-type:c1.*,!region:us-east-1`. + // +kubebuilder:validation:Optional + FilterTags []*string `json:"filterTags,omitempty" tf:"filter_tags,omitempty"` + + // (List of String) Array of tags (in the form key:value) to add to all hosts and metrics reporting through this integration. + // Array of tags (in the form `key:value`) to add to all hosts and metrics reporting through this integration. + // +kubebuilder:validation:Optional + HostTags []*string `json:"hostTags,omitempty" tf:"host_tags,omitempty"` + + // (String) Whether Datadog collects metrics for this AWS account. + // Whether Datadog collects metrics for this AWS account. + // +kubebuilder:validation:Optional + MetricsCollectionEnabled *string `json:"metricsCollectionEnabled,omitempty" tf:"metrics_collection_enabled,omitempty"` + + // (String) Whether Datadog collects a standard set of resources from your AWS account. + // Whether Datadog collects a standard set of resources from your AWS account. + // +kubebuilder:validation:Optional + ResourceCollectionEnabled *string `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` + + // (String) Your Datadog role delegation name. + // Your Datadog role delegation name. + // +kubebuilder:validation:Optional + RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` + + // (String, Sensitive) Your AWS secret access key. Only required if your AWS account is a GovCloud or China account. + // Your AWS secret access key. Only required if your AWS account is a GovCloud or China account. + // +kubebuilder:validation:Optional + SecretAccessKeySecretRef *v1.SecretKeySelector `json:"secretAccessKeySecretRef,omitempty" tf:"-"` +} + +// AWSSpec defines the desired state of AWS +type AWSSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AWSParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AWSInitParameters `json:"initProvider,omitempty"` +} + +// AWSStatus defines the observed state of AWS. +type AWSStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AWSObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// AWS is the Schema for the AWSs API. Provides a Datadog - Amazon Web Services integration resource. This can be used to create and manage Datadog - Amazon Web Services integration. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type AWS struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec AWSSpec `json:"spec"` + Status AWSStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AWSList contains a list of AWSs +type AWSList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []AWS `json:"items"` +} + +// Repository type metadata. +var ( + AWS_Kind = "AWS" + AWS_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AWS_Kind}.String() + AWS_KindAPIVersion = AWS_Kind + "." + CRDGroupVersion.String() + AWS_GroupVersionKind = CRDGroupVersion.WithKind(AWS_Kind) +) + +func init() { + SchemeBuilder.Register(&AWS{}, &AWSList{}) +} diff --git a/apis/integration/v1alpha1/zz_awseventbridge_terraformed.go b/apis/integration/v1alpha1/zz_awseventbridge_terraformed.go new file mode 100755 index 0000000..39c5026 --- /dev/null +++ b/apis/integration/v1alpha1/zz_awseventbridge_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this AWSEventBridge +func (mg *AWSEventBridge) GetTerraformResourceType() string { + return "datadog_integration_aws_event_bridge" +} + +// GetConnectionDetailsMapping for this AWSEventBridge +func (tr *AWSEventBridge) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this AWSEventBridge +func (tr *AWSEventBridge) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this AWSEventBridge +func (tr *AWSEventBridge) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this AWSEventBridge +func (tr *AWSEventBridge) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this AWSEventBridge +func (tr *AWSEventBridge) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this AWSEventBridge +func (tr *AWSEventBridge) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this AWSEventBridge +func (tr *AWSEventBridge) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this AWSEventBridge +func (tr *AWSEventBridge) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this AWSEventBridge using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *AWSEventBridge) LateInitialize(attrs []byte) (bool, error) { + params := &AWSEventBridgeParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *AWSEventBridge) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_awseventbridge_types.go b/apis/integration/v1alpha1/zz_awseventbridge_types.go new file mode 100755 index 0000000..eb1dd8a --- /dev/null +++ b/apis/integration/v1alpha1/zz_awseventbridge_types.go @@ -0,0 +1,146 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AWSEventBridgeInitParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Boolean) True if Datadog should create the event bus in addition to the event source. Requires the events:CreateEventBus permission. Defaults to true. + // True if Datadog should create the event bus in addition to the event source. Requires the `events:CreateEventBus` permission. Defaults to `true`. + CreateEventBus *bool `json:"createEventBus,omitempty" tf:"create_event_bus,omitempty"` + + // (String) The given part of the event source name, which is then combined with an assigned suffix to form the full name. + // The given part of the event source name, which is then combined with an assigned suffix to form the full name. + EventGeneratorName *string `json:"eventGeneratorName,omitempty" tf:"event_generator_name,omitempty"` + + // (String) The event source's AWS region. + // The event source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + +type AWSEventBridgeObservation struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Boolean) True if Datadog should create the event bus in addition to the event source. Requires the events:CreateEventBus permission. Defaults to true. + // True if Datadog should create the event bus in addition to the event source. Requires the `events:CreateEventBus` permission. Defaults to `true`. + CreateEventBus *bool `json:"createEventBus,omitempty" tf:"create_event_bus,omitempty"` + + // (String) The given part of the event source name, which is then combined with an assigned suffix to form the full name. + // The given part of the event source name, which is then combined with an assigned suffix to form the full name. + EventGeneratorName *string `json:"eventGeneratorName,omitempty" tf:"event_generator_name,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The event source's AWS region. + // The event source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + +type AWSEventBridgeParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Boolean) True if Datadog should create the event bus in addition to the event source. Requires the events:CreateEventBus permission. Defaults to true. + // True if Datadog should create the event bus in addition to the event source. Requires the `events:CreateEventBus` permission. Defaults to `true`. + // +kubebuilder:validation:Optional + CreateEventBus *bool `json:"createEventBus,omitempty" tf:"create_event_bus,omitempty"` + + // (String) The given part of the event source name, which is then combined with an assigned suffix to form the full name. + // The given part of the event source name, which is then combined with an assigned suffix to form the full name. + // +kubebuilder:validation:Optional + EventGeneratorName *string `json:"eventGeneratorName,omitempty" tf:"event_generator_name,omitempty"` + + // (String) The event source's AWS region. + // The event source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). + // +kubebuilder:validation:Optional + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + +// AWSEventBridgeSpec defines the desired state of AWSEventBridge +type AWSEventBridgeSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AWSEventBridgeParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AWSEventBridgeInitParameters `json:"initProvider,omitempty"` +} + +// AWSEventBridgeStatus defines the observed state of AWSEventBridge. +type AWSEventBridgeStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AWSEventBridgeObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// AWSEventBridge is the Schema for the AWSEventBridges API. Provides a Datadog - Amazon Web Services integration EventBridge resource. This can be used to create and manage Event Sources for each Datadog integrated AWS account. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type AWSEventBridge struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.accountId) || (has(self.initProvider) && has(self.initProvider.accountId))",message="spec.forProvider.accountId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.eventGeneratorName) || (has(self.initProvider) && has(self.initProvider.eventGeneratorName))",message="spec.forProvider.eventGeneratorName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.region) || (has(self.initProvider) && has(self.initProvider.region))",message="spec.forProvider.region is a required parameter" + Spec AWSEventBridgeSpec `json:"spec"` + Status AWSEventBridgeStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AWSEventBridgeList contains a list of AWSEventBridges +type AWSEventBridgeList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []AWSEventBridge `json:"items"` +} + +// Repository type metadata. +var ( + AWSEventBridge_Kind = "AWSEventBridge" + AWSEventBridge_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AWSEventBridge_Kind}.String() + AWSEventBridge_KindAPIVersion = AWSEventBridge_Kind + "." + CRDGroupVersion.String() + AWSEventBridge_GroupVersionKind = CRDGroupVersion.WithKind(AWSEventBridge_Kind) +) + +func init() { + SchemeBuilder.Register(&AWSEventBridge{}, &AWSEventBridgeList{}) +} diff --git a/apis/integration/v1alpha1/zz_awslambdaarn_terraformed.go b/apis/integration/v1alpha1/zz_awslambdaarn_terraformed.go new file mode 100755 index 0000000..0f81efb --- /dev/null +++ b/apis/integration/v1alpha1/zz_awslambdaarn_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this AWSLambdaARN +func (mg *AWSLambdaARN) GetTerraformResourceType() string { + return "datadog_integration_aws_lambda_arn" +} + +// GetConnectionDetailsMapping for this AWSLambdaARN +func (tr *AWSLambdaARN) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this AWSLambdaARN +func (tr *AWSLambdaARN) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this AWSLambdaARN +func (tr *AWSLambdaARN) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this AWSLambdaARN +func (tr *AWSLambdaARN) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this AWSLambdaARN +func (tr *AWSLambdaARN) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this AWSLambdaARN +func (tr *AWSLambdaARN) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this AWSLambdaARN +func (tr *AWSLambdaARN) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this AWSLambdaARN +func (tr *AWSLambdaARN) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this AWSLambdaARN using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *AWSLambdaARN) LateInitialize(attrs []byte) (bool, error) { + params := &AWSLambdaARNParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *AWSLambdaARN) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_awslambdaarn_types.go b/apis/integration/v1alpha1/zz_awslambdaarn_types.go new file mode 100755 index 0000000..c9e965e --- /dev/null +++ b/apis/integration/v1alpha1/zz_awslambdaarn_types.go @@ -0,0 +1,119 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AWSLambdaARNInitParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ARN of the Datadog forwarder Lambda. + // The ARN of the Datadog forwarder Lambda. + LambdaArn *string `json:"lambdaArn,omitempty" tf:"lambda_arn,omitempty"` +} + +type AWSLambdaARNObservation struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The ARN of the Datadog forwarder Lambda. + // The ARN of the Datadog forwarder Lambda. + LambdaArn *string `json:"lambdaArn,omitempty" tf:"lambda_arn,omitempty"` +} + +type AWSLambdaARNParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ARN of the Datadog forwarder Lambda. + // The ARN of the Datadog forwarder Lambda. + // +kubebuilder:validation:Optional + LambdaArn *string `json:"lambdaArn,omitempty" tf:"lambda_arn,omitempty"` +} + +// AWSLambdaARNSpec defines the desired state of AWSLambdaARN +type AWSLambdaARNSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AWSLambdaARNParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AWSLambdaARNInitParameters `json:"initProvider,omitempty"` +} + +// AWSLambdaARNStatus defines the observed state of AWSLambdaARN. +type AWSLambdaARNStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AWSLambdaARNObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// AWSLambdaARN is the Schema for the AWSLambdaARNs API. Provides a Datadog - Amazon Web Services integration Lambda ARN resource. This can be used to create and manage the log collection Lambdas for an account. Update operations are currently not supported with datadog API so any change forces a new resource. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type AWSLambdaARN struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.accountId) || (has(self.initProvider) && has(self.initProvider.accountId))",message="spec.forProvider.accountId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.lambdaArn) || (has(self.initProvider) && has(self.initProvider.lambdaArn))",message="spec.forProvider.lambdaArn is a required parameter" + Spec AWSLambdaARNSpec `json:"spec"` + Status AWSLambdaARNStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AWSLambdaARNList contains a list of AWSLambdaARNs +type AWSLambdaARNList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []AWSLambdaARN `json:"items"` +} + +// Repository type metadata. +var ( + AWSLambdaARN_Kind = "AWSLambdaARN" + AWSLambdaARN_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AWSLambdaARN_Kind}.String() + AWSLambdaARN_KindAPIVersion = AWSLambdaARN_Kind + "." + CRDGroupVersion.String() + AWSLambdaARN_GroupVersionKind = CRDGroupVersion.WithKind(AWSLambdaARN_Kind) +) + +func init() { + SchemeBuilder.Register(&AWSLambdaARN{}, &AWSLambdaARNList{}) +} diff --git a/apis/integration/v1alpha1/zz_awslogcollection_terraformed.go b/apis/integration/v1alpha1/zz_awslogcollection_terraformed.go new file mode 100755 index 0000000..6bf0676 --- /dev/null +++ b/apis/integration/v1alpha1/zz_awslogcollection_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this AWSLogCollection +func (mg *AWSLogCollection) GetTerraformResourceType() string { + return "datadog_integration_aws_log_collection" +} + +// GetConnectionDetailsMapping for this AWSLogCollection +func (tr *AWSLogCollection) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this AWSLogCollection +func (tr *AWSLogCollection) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this AWSLogCollection +func (tr *AWSLogCollection) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this AWSLogCollection +func (tr *AWSLogCollection) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this AWSLogCollection +func (tr *AWSLogCollection) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this AWSLogCollection +func (tr *AWSLogCollection) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this AWSLogCollection +func (tr *AWSLogCollection) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this AWSLogCollection +func (tr *AWSLogCollection) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this AWSLogCollection using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *AWSLogCollection) LateInitialize(attrs []byte) (bool, error) { + params := &AWSLogCollectionParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *AWSLogCollection) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_awslogcollection_types.go b/apis/integration/v1alpha1/zz_awslogcollection_types.go new file mode 100755 index 0000000..d955b6b --- /dev/null +++ b/apis/integration/v1alpha1/zz_awslogcollection_types.go @@ -0,0 +1,119 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AWSLogCollectionInitParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (List of String) A list of services to collect logs from. See the api docs for more details on which services are supported. + // A list of services to collect logs from. See the [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) for more details on which services are supported. + Services []*string `json:"services,omitempty" tf:"services,omitempty"` +} + +type AWSLogCollectionObservation struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (List of String) A list of services to collect logs from. See the api docs for more details on which services are supported. + // A list of services to collect logs from. See the [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) for more details on which services are supported. + Services []*string `json:"services,omitempty" tf:"services,omitempty"` +} + +type AWSLogCollectionParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (List of String) A list of services to collect logs from. See the api docs for more details on which services are supported. + // A list of services to collect logs from. See the [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) for more details on which services are supported. + // +kubebuilder:validation:Optional + Services []*string `json:"services,omitempty" tf:"services,omitempty"` +} + +// AWSLogCollectionSpec defines the desired state of AWSLogCollection +type AWSLogCollectionSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AWSLogCollectionParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AWSLogCollectionInitParameters `json:"initProvider,omitempty"` +} + +// AWSLogCollectionStatus defines the observed state of AWSLogCollection. +type AWSLogCollectionStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AWSLogCollectionObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// AWSLogCollection is the Schema for the AWSLogCollections API. Provides a Datadog - Amazon Web Services integration log collection resource. This can be used to manage which AWS services logs are collected from for an account. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type AWSLogCollection struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.accountId) || (has(self.initProvider) && has(self.initProvider.accountId))",message="spec.forProvider.accountId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.services) || (has(self.initProvider) && has(self.initProvider.services))",message="spec.forProvider.services is a required parameter" + Spec AWSLogCollectionSpec `json:"spec"` + Status AWSLogCollectionStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AWSLogCollectionList contains a list of AWSLogCollections +type AWSLogCollectionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []AWSLogCollection `json:"items"` +} + +// Repository type metadata. +var ( + AWSLogCollection_Kind = "AWSLogCollection" + AWSLogCollection_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AWSLogCollection_Kind}.String() + AWSLogCollection_KindAPIVersion = AWSLogCollection_Kind + "." + CRDGroupVersion.String() + AWSLogCollection_GroupVersionKind = CRDGroupVersion.WithKind(AWSLogCollection_Kind) +) + +func init() { + SchemeBuilder.Register(&AWSLogCollection{}, &AWSLogCollectionList{}) +} diff --git a/apis/integration/v1alpha1/zz_awstagfilter_terraformed.go b/apis/integration/v1alpha1/zz_awstagfilter_terraformed.go new file mode 100755 index 0000000..97dc40f --- /dev/null +++ b/apis/integration/v1alpha1/zz_awstagfilter_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this AWSTagFilter +func (mg *AWSTagFilter) GetTerraformResourceType() string { + return "datadog_integration_aws_tag_filter" +} + +// GetConnectionDetailsMapping for this AWSTagFilter +func (tr *AWSTagFilter) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this AWSTagFilter +func (tr *AWSTagFilter) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this AWSTagFilter +func (tr *AWSTagFilter) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this AWSTagFilter +func (tr *AWSTagFilter) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this AWSTagFilter +func (tr *AWSTagFilter) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this AWSTagFilter +func (tr *AWSTagFilter) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this AWSTagFilter +func (tr *AWSTagFilter) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this AWSTagFilter +func (tr *AWSTagFilter) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this AWSTagFilter using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *AWSTagFilter) LateInitialize(attrs []byte) (bool, error) { + params := &AWSTagFilterParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *AWSTagFilter) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_awstagfilter_types.go b/apis/integration/v1alpha1/zz_awstagfilter_types.go new file mode 100755 index 0000000..cd43b75 --- /dev/null +++ b/apis/integration/v1alpha1/zz_awstagfilter_types.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AWSTagFilterInitParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda. + // The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`. + Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + + // (String) The tag filter string. + // The tag filter string. + TagFilterStr *string `json:"tagFilterStr,omitempty" tf:"tag_filter_str,omitempty"` +} + +type AWSTagFilterObservation struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda. + // The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`. + Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + + // (String) The tag filter string. + // The tag filter string. + TagFilterStr *string `json:"tagFilterStr,omitempty" tf:"tag_filter_str,omitempty"` +} + +type AWSTagFilterParameters struct { + + // (String) Your AWS Account ID without dashes. + // Your AWS Account ID without dashes. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda. + // The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`. + // +kubebuilder:validation:Optional + Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + + // (String) The tag filter string. + // The tag filter string. + // +kubebuilder:validation:Optional + TagFilterStr *string `json:"tagFilterStr,omitempty" tf:"tag_filter_str,omitempty"` +} + +// AWSTagFilterSpec defines the desired state of AWSTagFilter +type AWSTagFilterSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AWSTagFilterParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AWSTagFilterInitParameters `json:"initProvider,omitempty"` +} + +// AWSTagFilterStatus defines the observed state of AWSTagFilter. +type AWSTagFilterStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AWSTagFilterObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// AWSTagFilter is the Schema for the AWSTagFilters API. Provides a Datadog AWS tag filter resource. This can be used to create and manage Datadog AWS tag filters. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type AWSTagFilter struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.accountId) || (has(self.initProvider) && has(self.initProvider.accountId))",message="spec.forProvider.accountId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.__namespace__) || (has(self.initProvider) && has(self.initProvider.__namespace__))",message="spec.forProvider.namespace is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.tagFilterStr) || (has(self.initProvider) && has(self.initProvider.tagFilterStr))",message="spec.forProvider.tagFilterStr is a required parameter" + Spec AWSTagFilterSpec `json:"spec"` + Status AWSTagFilterStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AWSTagFilterList contains a list of AWSTagFilters +type AWSTagFilterList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []AWSTagFilter `json:"items"` +} + +// Repository type metadata. +var ( + AWSTagFilter_Kind = "AWSTagFilter" + AWSTagFilter_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: AWSTagFilter_Kind}.String() + AWSTagFilter_KindAPIVersion = AWSTagFilter_Kind + "." + CRDGroupVersion.String() + AWSTagFilter_GroupVersionKind = CRDGroupVersion.WithKind(AWSTagFilter_Kind) +) + +func init() { + SchemeBuilder.Register(&AWSTagFilter{}, &AWSTagFilterList{}) +} diff --git a/apis/integration/v1alpha1/zz_azure_terraformed.go b/apis/integration/v1alpha1/zz_azure_terraformed.go new file mode 100755 index 0000000..987ff6f --- /dev/null +++ b/apis/integration/v1alpha1/zz_azure_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Azure +func (mg *Azure) GetTerraformResourceType() string { + return "datadog_integration_azure" +} + +// GetConnectionDetailsMapping for this Azure +func (tr *Azure) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"client_secret": "spec.forProvider.clientSecretSecretRef"} +} + +// GetObservation of this Azure +func (tr *Azure) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Azure +func (tr *Azure) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Azure +func (tr *Azure) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Azure +func (tr *Azure) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Azure +func (tr *Azure) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Azure +func (tr *Azure) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Azure +func (tr *Azure) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Azure using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Azure) LateInitialize(attrs []byte) (bool, error) { + params := &AzureParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Azure) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_azure_types.go b/apis/integration/v1alpha1/zz_azure_types.go new file mode 100755 index 0000000..a9ef9ed --- /dev/null +++ b/apis/integration/v1alpha1/zz_azure_types.go @@ -0,0 +1,222 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AzureInitParameters struct { + + // separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to "". + // This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to `""`. + AppServicePlanFilters *string `json:"appServicePlanFilters,omitempty" tf:"app_service_plan_filters,omitempty"` + + // (Boolean) Silence monitors for expected Azure VM shutdowns. Defaults to false. + // Silence monitors for expected Azure VM shutdowns. Defaults to `false`. + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your Azure web application ID. + // Your Azure web application ID. + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to "". + // This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to `""`. + ContainerAppFilters *string `json:"containerAppFilters,omitempty" tf:"container_app_filters,omitempty"` + + // (Boolean) When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration. + // Note: This requires resource_collection_enabled to be set to true. Defaults to false. + // When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration. + // Note: This requires `resource_collection_enabled` to be set to true. Defaults to `false`. + CspmEnabled *bool `json:"cspmEnabled,omitempty" tf:"cspm_enabled,omitempty"` + + // (Boolean) Enable custom metrics for your organization. Defaults to false. + // Enable custom metrics for your organization. Defaults to `false`. + CustomMetricsEnabled *bool `json:"customMetricsEnabled,omitempty" tf:"custom_metrics_enabled,omitempty"` + + // (String) String of host tag(s) (in the form key:value,key:value) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. env:production,deploymentgroup:red Defaults to "". + // String of host tag(s) (in the form `key:value,key:value`) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. `env:production,deploymentgroup:red` Defaults to `""`. + HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (Boolean) When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration. + // When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration. + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` + + // (String) Your Azure Active Directory ID. + // Your Azure Active Directory ID. + TenantName *string `json:"tenantName,omitempty" tf:"tenant_name,omitempty"` +} + +type AzureObservation struct { + + // separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to "". + // This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to `""`. + AppServicePlanFilters *string `json:"appServicePlanFilters,omitempty" tf:"app_service_plan_filters,omitempty"` + + // (Boolean) Silence monitors for expected Azure VM shutdowns. Defaults to false. + // Silence monitors for expected Azure VM shutdowns. Defaults to `false`. + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your Azure web application ID. + // Your Azure web application ID. + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to "". + // This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to `""`. + ContainerAppFilters *string `json:"containerAppFilters,omitempty" tf:"container_app_filters,omitempty"` + + // (Boolean) When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration. + // Note: This requires resource_collection_enabled to be set to true. Defaults to false. + // When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration. + // Note: This requires `resource_collection_enabled` to be set to true. Defaults to `false`. + CspmEnabled *bool `json:"cspmEnabled,omitempty" tf:"cspm_enabled,omitempty"` + + // (Boolean) Enable custom metrics for your organization. Defaults to false. + // Enable custom metrics for your organization. Defaults to `false`. + CustomMetricsEnabled *bool `json:"customMetricsEnabled,omitempty" tf:"custom_metrics_enabled,omitempty"` + + // (String) String of host tag(s) (in the form key:value,key:value) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. env:production,deploymentgroup:red Defaults to "". + // String of host tag(s) (in the form `key:value,key:value`) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. `env:production,deploymentgroup:red` Defaults to `""`. + HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration. + // When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration. + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` + + // (String) Your Azure Active Directory ID. + // Your Azure Active Directory ID. + TenantName *string `json:"tenantName,omitempty" tf:"tenant_name,omitempty"` +} + +type AzureParameters struct { + + // separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to "". + // This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to `""`. + // +kubebuilder:validation:Optional + AppServicePlanFilters *string `json:"appServicePlanFilters,omitempty" tf:"app_service_plan_filters,omitempty"` + + // (Boolean) Silence monitors for expected Azure VM shutdowns. Defaults to false. + // Silence monitors for expected Azure VM shutdowns. Defaults to `false`. + // +kubebuilder:validation:Optional + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your Azure web application ID. + // Your Azure web application ID. + // +kubebuilder:validation:Optional + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // (String, Sensitive) Your Azure web application secret key. + // (Required for Initial Creation) Your Azure web application secret key. + // +kubebuilder:validation:Optional + ClientSecretSecretRef v1.SecretKeySelector `json:"clientSecretSecretRef" tf:"-"` + + // separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to "". + // This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to `""`. + // +kubebuilder:validation:Optional + ContainerAppFilters *string `json:"containerAppFilters,omitempty" tf:"container_app_filters,omitempty"` + + // (Boolean) When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration. + // Note: This requires resource_collection_enabled to be set to true. Defaults to false. + // When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration. + // Note: This requires `resource_collection_enabled` to be set to true. Defaults to `false`. + // +kubebuilder:validation:Optional + CspmEnabled *bool `json:"cspmEnabled,omitempty" tf:"cspm_enabled,omitempty"` + + // (Boolean) Enable custom metrics for your organization. Defaults to false. + // Enable custom metrics for your organization. Defaults to `false`. + // +kubebuilder:validation:Optional + CustomMetricsEnabled *bool `json:"customMetricsEnabled,omitempty" tf:"custom_metrics_enabled,omitempty"` + + // (String) String of host tag(s) (in the form key:value,key:value) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. env:production,deploymentgroup:red Defaults to "". + // String of host tag(s) (in the form `key:value,key:value`) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. `env:production,deploymentgroup:red` Defaults to `""`. + // +kubebuilder:validation:Optional + HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (Boolean) When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration. + // When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration. + // +kubebuilder:validation:Optional + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` + + // (String) Your Azure Active Directory ID. + // Your Azure Active Directory ID. + // +kubebuilder:validation:Optional + TenantName *string `json:"tenantName,omitempty" tf:"tenant_name,omitempty"` +} + +// AzureSpec defines the desired state of Azure +type AzureSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider AzureParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider AzureInitParameters `json:"initProvider,omitempty"` +} + +// AzureStatus defines the observed state of Azure. +type AzureStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider AzureObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Azure is the Schema for the Azures API. Provides a Datadog - Microsoft Azure integration resource. This can be used to create and manage the integrations. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Azure struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.clientId) || (has(self.initProvider) && has(self.initProvider.clientId))",message="spec.forProvider.clientId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.clientSecretSecretRef)",message="spec.forProvider.clientSecretSecretRef is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.tenantName) || (has(self.initProvider) && has(self.initProvider.tenantName))",message="spec.forProvider.tenantName is a required parameter" + Spec AzureSpec `json:"spec"` + Status AzureStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// AzureList contains a list of Azures +type AzureList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Azure `json:"items"` +} + +// Repository type metadata. +var ( + Azure_Kind = "Azure" + Azure_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Azure_Kind}.String() + Azure_KindAPIVersion = Azure_Kind + "." + CRDGroupVersion.String() + Azure_GroupVersionKind = CRDGroupVersion.WithKind(Azure_Kind) +) + +func init() { + SchemeBuilder.Register(&Azure{}, &AzureList{}) +} diff --git a/apis/integration/v1alpha1/zz_cloudflareaccount_terraformed.go b/apis/integration/v1alpha1/zz_cloudflareaccount_terraformed.go new file mode 100755 index 0000000..5b7604d --- /dev/null +++ b/apis/integration/v1alpha1/zz_cloudflareaccount_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this CloudflareAccount +func (mg *CloudflareAccount) GetTerraformResourceType() string { + return "datadog_integration_cloudflare_account" +} + +// GetConnectionDetailsMapping for this CloudflareAccount +func (tr *CloudflareAccount) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"api_key": "spec.forProvider.apiKeySecretRef"} +} + +// GetObservation of this CloudflareAccount +func (tr *CloudflareAccount) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this CloudflareAccount +func (tr *CloudflareAccount) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this CloudflareAccount +func (tr *CloudflareAccount) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this CloudflareAccount +func (tr *CloudflareAccount) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this CloudflareAccount +func (tr *CloudflareAccount) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this CloudflareAccount +func (tr *CloudflareAccount) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this CloudflareAccount +func (tr *CloudflareAccount) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this CloudflareAccount using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *CloudflareAccount) LateInitialize(attrs []byte) (bool, error) { + params := &CloudflareAccountParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *CloudflareAccount) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_cloudflareaccount_types.go b/apis/integration/v1alpha1/zz_cloudflareaccount_types.go new file mode 100755 index 0000000..e2d371f --- /dev/null +++ b/apis/integration/v1alpha1/zz_cloudflareaccount_types.go @@ -0,0 +1,124 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type CloudflareAccountInitParameters struct { + + // (String) The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. + // The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) The name of the Cloudflare account. + // The name of the Cloudflare account. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type CloudflareAccountObservation struct { + + // (String) The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. + // The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the Cloudflare account. + // The name of the Cloudflare account. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type CloudflareAccountParameters struct { + + // (String, Sensitive) The API key (or token) for the Cloudflare account. + // The API key (or token) for the Cloudflare account. + // +kubebuilder:validation:Optional + APIKeySecretRef v1.SecretKeySelector `json:"apiKeySecretRef" tf:"-"` + + // (String) The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. + // The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. + // +kubebuilder:validation:Optional + Email *string `json:"email,omitempty" tf:"email,omitempty"` + + // (String) The name of the Cloudflare account. + // The name of the Cloudflare account. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// CloudflareAccountSpec defines the desired state of CloudflareAccount +type CloudflareAccountSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider CloudflareAccountParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider CloudflareAccountInitParameters `json:"initProvider,omitempty"` +} + +// CloudflareAccountStatus defines the observed state of CloudflareAccount. +type CloudflareAccountStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider CloudflareAccountObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// CloudflareAccount is the Schema for the CloudflareAccounts API. Provides a Datadog IntegrationCloudflareAccount resource. This can be used to create and manage Datadog integrationcloudflareaccount. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type CloudflareAccount struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.apiKeySecretRef)",message="spec.forProvider.apiKeySecretRef is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec CloudflareAccountSpec `json:"spec"` + Status CloudflareAccountStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// CloudflareAccountList contains a list of CloudflareAccounts +type CloudflareAccountList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CloudflareAccount `json:"items"` +} + +// Repository type metadata. +var ( + CloudflareAccount_Kind = "CloudflareAccount" + CloudflareAccount_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: CloudflareAccount_Kind}.String() + CloudflareAccount_KindAPIVersion = CloudflareAccount_Kind + "." + CRDGroupVersion.String() + CloudflareAccount_GroupVersionKind = CRDGroupVersion.WithKind(CloudflareAccount_Kind) +) + +func init() { + SchemeBuilder.Register(&CloudflareAccount{}, &CloudflareAccountList{}) +} diff --git a/apis/integration/v1alpha1/zz_confluentaccount_terraformed.go b/apis/integration/v1alpha1/zz_confluentaccount_terraformed.go new file mode 100755 index 0000000..97b6ffd --- /dev/null +++ b/apis/integration/v1alpha1/zz_confluentaccount_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ConfluentAccount +func (mg *ConfluentAccount) GetTerraformResourceType() string { + return "datadog_integration_confluent_account" +} + +// GetConnectionDetailsMapping for this ConfluentAccount +func (tr *ConfluentAccount) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"api_secret": "spec.forProvider.apiSecretSecretRef"} +} + +// GetObservation of this ConfluentAccount +func (tr *ConfluentAccount) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ConfluentAccount +func (tr *ConfluentAccount) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ConfluentAccount +func (tr *ConfluentAccount) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ConfluentAccount +func (tr *ConfluentAccount) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ConfluentAccount +func (tr *ConfluentAccount) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ConfluentAccount +func (tr *ConfluentAccount) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ConfluentAccount +func (tr *ConfluentAccount) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ConfluentAccount using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ConfluentAccount) LateInitialize(attrs []byte) (bool, error) { + params := &ConfluentAccountParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ConfluentAccount) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_confluentaccount_types.go b/apis/integration/v1alpha1/zz_confluentaccount_types.go new file mode 100755 index 0000000..35e6d3b --- /dev/null +++ b/apis/integration/v1alpha1/zz_confluentaccount_types.go @@ -0,0 +1,127 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ConfluentAccountInitParameters struct { + + // (String) The API key associated with your Confluent account. + // The API key associated with your Confluent account. + APIKey *string `json:"apiKey,omitempty" tf:"api_key,omitempty"` + + // value pairs separated by a colon. + // A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type ConfluentAccountObservation struct { + + // (String) The API key associated with your Confluent account. + // The API key associated with your Confluent account. + APIKey *string `json:"apiKey,omitempty" tf:"api_key,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // value pairs separated by a colon. + // A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type ConfluentAccountParameters struct { + + // (String) The API key associated with your Confluent account. + // The API key associated with your Confluent account. + // +kubebuilder:validation:Optional + APIKey *string `json:"apiKey,omitempty" tf:"api_key,omitempty"` + + // (String, Sensitive) The API secret associated with your Confluent account. + // The API secret associated with your Confluent account. + // +kubebuilder:validation:Optional + APISecretSecretRef v1.SecretKeySelector `json:"apiSecretSecretRef" tf:"-"` + + // value pairs separated by a colon. + // A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +// ConfluentAccountSpec defines the desired state of ConfluentAccount +type ConfluentAccountSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ConfluentAccountParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ConfluentAccountInitParameters `json:"initProvider,omitempty"` +} + +// ConfluentAccountStatus defines the observed state of ConfluentAccount. +type ConfluentAccountStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ConfluentAccountObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ConfluentAccount is the Schema for the ConfluentAccounts API. Provides a Datadog IntegrationConfluentAccount resource. This can be used to create and manage Datadog integrationconfluentaccount. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ConfluentAccount struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.apiKey) || (has(self.initProvider) && has(self.initProvider.apiKey))",message="spec.forProvider.apiKey is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.apiSecretSecretRef)",message="spec.forProvider.apiSecretSecretRef is a required parameter" + Spec ConfluentAccountSpec `json:"spec"` + Status ConfluentAccountStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ConfluentAccountList contains a list of ConfluentAccounts +type ConfluentAccountList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ConfluentAccount `json:"items"` +} + +// Repository type metadata. +var ( + ConfluentAccount_Kind = "ConfluentAccount" + ConfluentAccount_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ConfluentAccount_Kind}.String() + ConfluentAccount_KindAPIVersion = ConfluentAccount_Kind + "." + CRDGroupVersion.String() + ConfluentAccount_GroupVersionKind = CRDGroupVersion.WithKind(ConfluentAccount_Kind) +) + +func init() { + SchemeBuilder.Register(&ConfluentAccount{}, &ConfluentAccountList{}) +} diff --git a/apis/integration/v1alpha1/zz_confluentresource_terraformed.go b/apis/integration/v1alpha1/zz_confluentresource_terraformed.go new file mode 100755 index 0000000..97f7908 --- /dev/null +++ b/apis/integration/v1alpha1/zz_confluentresource_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ConfluentResource +func (mg *ConfluentResource) GetTerraformResourceType() string { + return "datadog_integration_confluent_resource" +} + +// GetConnectionDetailsMapping for this ConfluentResource +func (tr *ConfluentResource) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ConfluentResource +func (tr *ConfluentResource) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ConfluentResource +func (tr *ConfluentResource) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ConfluentResource +func (tr *ConfluentResource) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ConfluentResource +func (tr *ConfluentResource) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ConfluentResource +func (tr *ConfluentResource) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ConfluentResource +func (tr *ConfluentResource) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ConfluentResource +func (tr *ConfluentResource) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ConfluentResource using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ConfluentResource) LateInitialize(attrs []byte) (bool, error) { + params := &ConfluentResourceParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ConfluentResource) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_confluentresource_types.go b/apis/integration/v1alpha1/zz_confluentresource_types.go new file mode 100755 index 0000000..65f803b --- /dev/null +++ b/apis/integration/v1alpha1/zz_confluentresource_types.go @@ -0,0 +1,161 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ConfluentResourceInitParameters struct { + + // (String) Confluent Account ID. + // Confluent Account ID. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Boolean) Enable the custom.consumer_lag_offset metric, which contains extra metric tags. Defaults to false. + // Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags. Defaults to `false`. + EnableCustomMetrics *bool `json:"enableCustomMetrics,omitempty" tf:"enable_custom_metrics,omitempty"` + + // (String) The ID associated with a Confluent resource. + // The ID associated with a Confluent resource. + ResourceID *string `json:"resourceId,omitempty" tf:"resource_id,omitempty"` + + // (String) The resource type of the Resource. Can be kafka, connector, ksql, or schema_registry. + // The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`. + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + + // value pairs separated by a colon. + // A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type ConfluentResourceObservation struct { + + // (String) Confluent Account ID. + // Confluent Account ID. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Boolean) Enable the custom.consumer_lag_offset metric, which contains extra metric tags. Defaults to false. + // Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags. Defaults to `false`. + EnableCustomMetrics *bool `json:"enableCustomMetrics,omitempty" tf:"enable_custom_metrics,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The ID associated with a Confluent resource. + // The ID associated with a Confluent resource. + ResourceID *string `json:"resourceId,omitempty" tf:"resource_id,omitempty"` + + // (String) The resource type of the Resource. Can be kafka, connector, ksql, or schema_registry. + // The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`. + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + + // value pairs separated by a colon. + // A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type ConfluentResourceParameters struct { + + // (String) Confluent Account ID. + // Confluent Account ID. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (Boolean) Enable the custom.consumer_lag_offset metric, which contains extra metric tags. Defaults to false. + // Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags. Defaults to `false`. + // +kubebuilder:validation:Optional + EnableCustomMetrics *bool `json:"enableCustomMetrics,omitempty" tf:"enable_custom_metrics,omitempty"` + + // (String) The ID associated with a Confluent resource. + // The ID associated with a Confluent resource. + // +kubebuilder:validation:Optional + ResourceID *string `json:"resourceId,omitempty" tf:"resource_id,omitempty"` + + // (String) The resource type of the Resource. Can be kafka, connector, ksql, or schema_registry. + // The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`. + // +kubebuilder:validation:Optional + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + + // value pairs separated by a colon. + // A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +// ConfluentResourceSpec defines the desired state of ConfluentResource +type ConfluentResourceSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ConfluentResourceParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ConfluentResourceInitParameters `json:"initProvider,omitempty"` +} + +// ConfluentResourceStatus defines the observed state of ConfluentResource. +type ConfluentResourceStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ConfluentResourceObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ConfluentResource is the Schema for the ConfluentResources API. Provides a Datadog IntegrationConfluentResource resource. This can be used to create and manage Datadog integrationconfluentresource. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ConfluentResource struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.accountId) || (has(self.initProvider) && has(self.initProvider.accountId))",message="spec.forProvider.accountId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceId) || (has(self.initProvider) && has(self.initProvider.resourceId))",message="spec.forProvider.resourceId is a required parameter" + Spec ConfluentResourceSpec `json:"spec"` + Status ConfluentResourceStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ConfluentResourceList contains a list of ConfluentResources +type ConfluentResourceList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ConfluentResource `json:"items"` +} + +// Repository type metadata. +var ( + ConfluentResource_Kind = "ConfluentResource" + ConfluentResource_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ConfluentResource_Kind}.String() + ConfluentResource_KindAPIVersion = ConfluentResource_Kind + "." + CRDGroupVersion.String() + ConfluentResource_GroupVersionKind = CRDGroupVersion.WithKind(ConfluentResource_Kind) +) + +func init() { + SchemeBuilder.Register(&ConfluentResource{}, &ConfluentResourceList{}) +} diff --git a/apis/integration/v1alpha1/zz_fastlyaccount_terraformed.go b/apis/integration/v1alpha1/zz_fastlyaccount_terraformed.go new file mode 100755 index 0000000..dcf8208 --- /dev/null +++ b/apis/integration/v1alpha1/zz_fastlyaccount_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this FastlyAccount +func (mg *FastlyAccount) GetTerraformResourceType() string { + return "datadog_integration_fastly_account" +} + +// GetConnectionDetailsMapping for this FastlyAccount +func (tr *FastlyAccount) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this FastlyAccount +func (tr *FastlyAccount) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this FastlyAccount +func (tr *FastlyAccount) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this FastlyAccount +func (tr *FastlyAccount) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this FastlyAccount +func (tr *FastlyAccount) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this FastlyAccount +func (tr *FastlyAccount) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this FastlyAccount +func (tr *FastlyAccount) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this FastlyAccount +func (tr *FastlyAccount) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this FastlyAccount using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *FastlyAccount) LateInitialize(attrs []byte) (bool, error) { + params := &FastlyAccountParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *FastlyAccount) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_fastlyaccount_types.go b/apis/integration/v1alpha1/zz_fastlyaccount_types.go new file mode 100755 index 0000000..db749f0 --- /dev/null +++ b/apis/integration/v1alpha1/zz_fastlyaccount_types.go @@ -0,0 +1,119 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type FastlyAccountInitParameters struct { + + // (String) The API key for the Fastly account. + // The API key for the Fastly account. + APIKey *string `json:"apiKey,omitempty" tf:"api_key,omitempty"` + + // (String) The name of the Fastly account. + // The name of the Fastly account. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type FastlyAccountObservation struct { + + // (String) The API key for the Fastly account. + // The API key for the Fastly account. + APIKey *string `json:"apiKey,omitempty" tf:"api_key,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the Fastly account. + // The name of the Fastly account. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type FastlyAccountParameters struct { + + // (String) The API key for the Fastly account. + // The API key for the Fastly account. + // +kubebuilder:validation:Optional + APIKey *string `json:"apiKey,omitempty" tf:"api_key,omitempty"` + + // (String) The name of the Fastly account. + // The name of the Fastly account. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// FastlyAccountSpec defines the desired state of FastlyAccount +type FastlyAccountSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider FastlyAccountParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider FastlyAccountInitParameters `json:"initProvider,omitempty"` +} + +// FastlyAccountStatus defines the observed state of FastlyAccount. +type FastlyAccountStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider FastlyAccountObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// FastlyAccount is the Schema for the FastlyAccounts API. Provides a Datadog IntegrationFastlyAccount resource. This can be used to create and manage Datadog integrationfastlyaccount. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type FastlyAccount struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.apiKey) || (has(self.initProvider) && has(self.initProvider.apiKey))",message="spec.forProvider.apiKey is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec FastlyAccountSpec `json:"spec"` + Status FastlyAccountStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// FastlyAccountList contains a list of FastlyAccounts +type FastlyAccountList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FastlyAccount `json:"items"` +} + +// Repository type metadata. +var ( + FastlyAccount_Kind = "FastlyAccount" + FastlyAccount_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: FastlyAccount_Kind}.String() + FastlyAccount_KindAPIVersion = FastlyAccount_Kind + "." + CRDGroupVersion.String() + FastlyAccount_GroupVersionKind = CRDGroupVersion.WithKind(FastlyAccount_Kind) +) + +func init() { + SchemeBuilder.Register(&FastlyAccount{}, &FastlyAccountList{}) +} diff --git a/apis/integration/v1alpha1/zz_fastlyservice_terraformed.go b/apis/integration/v1alpha1/zz_fastlyservice_terraformed.go new file mode 100755 index 0000000..f782b32 --- /dev/null +++ b/apis/integration/v1alpha1/zz_fastlyservice_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this FastlyService +func (mg *FastlyService) GetTerraformResourceType() string { + return "datadog_integration_fastly_service" +} + +// GetConnectionDetailsMapping for this FastlyService +func (tr *FastlyService) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this FastlyService +func (tr *FastlyService) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this FastlyService +func (tr *FastlyService) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this FastlyService +func (tr *FastlyService) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this FastlyService +func (tr *FastlyService) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this FastlyService +func (tr *FastlyService) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this FastlyService +func (tr *FastlyService) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this FastlyService +func (tr *FastlyService) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this FastlyService using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *FastlyService) LateInitialize(attrs []byte) (bool, error) { + params := &FastlyServiceParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *FastlyService) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_fastlyservice_types.go b/apis/integration/v1alpha1/zz_fastlyservice_types.go new file mode 100755 index 0000000..01ac6a1 --- /dev/null +++ b/apis/integration/v1alpha1/zz_fastlyservice_types.go @@ -0,0 +1,134 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type FastlyServiceInitParameters struct { + + // (String) Fastly Account id. + // Fastly Account id. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ID of the Fastly service. + // The ID of the Fastly service. + ServiceID *string `json:"serviceId,omitempty" tf:"service_id,omitempty"` + + // (Set of String) A list of tags for the Fastly service. + // A list of tags for the Fastly service. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type FastlyServiceObservation struct { + + // (String) Fastly Account id. + // Fastly Account id. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The ID of the Fastly service. + // The ID of the Fastly service. + ServiceID *string `json:"serviceId,omitempty" tf:"service_id,omitempty"` + + // (Set of String) A list of tags for the Fastly service. + // A list of tags for the Fastly service. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type FastlyServiceParameters struct { + + // (String) Fastly Account id. + // Fastly Account id. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) The ID of the Fastly service. + // The ID of the Fastly service. + // +kubebuilder:validation:Optional + ServiceID *string `json:"serviceId,omitempty" tf:"service_id,omitempty"` + + // (Set of String) A list of tags for the Fastly service. + // A list of tags for the Fastly service. + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +// FastlyServiceSpec defines the desired state of FastlyService +type FastlyServiceSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider FastlyServiceParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider FastlyServiceInitParameters `json:"initProvider,omitempty"` +} + +// FastlyServiceStatus defines the observed state of FastlyService. +type FastlyServiceStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider FastlyServiceObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// FastlyService is the Schema for the FastlyServices API. Provides a Datadog IntegrationFastlyService resource. This can be used to create and manage Datadog integrationfastlyservice. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type FastlyService struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.serviceId) || (has(self.initProvider) && has(self.initProvider.serviceId))",message="spec.forProvider.serviceId is a required parameter" + Spec FastlyServiceSpec `json:"spec"` + Status FastlyServiceStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// FastlyServiceList contains a list of FastlyServices +type FastlyServiceList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FastlyService `json:"items"` +} + +// Repository type metadata. +var ( + FastlyService_Kind = "FastlyService" + FastlyService_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: FastlyService_Kind}.String() + FastlyService_KindAPIVersion = FastlyService_Kind + "." + CRDGroupVersion.String() + FastlyService_GroupVersionKind = CRDGroupVersion.WithKind(FastlyService_Kind) +) + +func init() { + SchemeBuilder.Register(&FastlyService{}, &FastlyServiceList{}) +} diff --git a/apis/integration/v1alpha1/zz_gcp_terraformed.go b/apis/integration/v1alpha1/zz_gcp_terraformed.go new file mode 100755 index 0000000..c05ff79 --- /dev/null +++ b/apis/integration/v1alpha1/zz_gcp_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this GCP +func (mg *GCP) GetTerraformResourceType() string { + return "datadog_integration_gcp" +} + +// GetConnectionDetailsMapping for this GCP +func (tr *GCP) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"private_key": "spec.forProvider.privateKeySecretRef"} +} + +// GetObservation of this GCP +func (tr *GCP) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this GCP +func (tr *GCP) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this GCP +func (tr *GCP) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this GCP +func (tr *GCP) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this GCP +func (tr *GCP) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this GCP +func (tr *GCP) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this GCP +func (tr *GCP) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this GCP using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *GCP) LateInitialize(attrs []byte) (bool, error) { + params := &GCPParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *GCP) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_gcp_types.go b/apis/integration/v1alpha1/zz_gcp_types.go new file mode 100755 index 0000000..309fc18 --- /dev/null +++ b/apis/integration/v1alpha1/zz_gcp_types.go @@ -0,0 +1,192 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type GCPInitParameters struct { + + // (Boolean) Silence monitors for expected GCE instance shutdowns. Defaults to false. + // Silence monitors for expected GCE instance shutdowns. Defaults to `false`. + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your email found in your JSON service account key. + // Your email found in your JSON service account key. + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (String) Your ID found in your JSON service account key. + // Your ID found in your JSON service account key. + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to false. + // Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to `false`. + CspmResourceCollectionEnabled *bool `json:"cspmResourceCollectionEnabled,omitempty" tf:"cspm_resource_collection_enabled,omitempty"` + + // (String) Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. + // Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. + HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (String) Your private key ID found in your JSON service account key. + // Your private key ID found in your JSON service account key. + PrivateKeyID *string `json:"privateKeyId,omitempty" tf:"private_key_id,omitempty"` + + // (String) Your Google Cloud project ID found in your JSON service account key. + // Your Google Cloud project ID found in your JSON service account key. + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type GCPObservation struct { + + // (Boolean) Silence monitors for expected GCE instance shutdowns. Defaults to false. + // Silence monitors for expected GCE instance shutdowns. Defaults to `false`. + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your email found in your JSON service account key. + // Your email found in your JSON service account key. + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (String) Your ID found in your JSON service account key. + // Your ID found in your JSON service account key. + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to false. + // Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to `false`. + CspmResourceCollectionEnabled *bool `json:"cspmResourceCollectionEnabled,omitempty" tf:"cspm_resource_collection_enabled,omitempty"` + + // (String) Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. + // Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. + HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Your private key ID found in your JSON service account key. + // Your private key ID found in your JSON service account key. + PrivateKeyID *string `json:"privateKeyId,omitempty" tf:"private_key_id,omitempty"` + + // (String) Your Google Cloud project ID found in your JSON service account key. + // Your Google Cloud project ID found in your JSON service account key. + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type GCPParameters struct { + + // (Boolean) Silence monitors for expected GCE instance shutdowns. Defaults to false. + // Silence monitors for expected GCE instance shutdowns. Defaults to `false`. + // +kubebuilder:validation:Optional + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your email found in your JSON service account key. + // Your email found in your JSON service account key. + // +kubebuilder:validation:Optional + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (String) Your ID found in your JSON service account key. + // Your ID found in your JSON service account key. + // +kubebuilder:validation:Optional + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to false. + // Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to `false`. + // +kubebuilder:validation:Optional + CspmResourceCollectionEnabled *bool `json:"cspmResourceCollectionEnabled,omitempty" tf:"cspm_resource_collection_enabled,omitempty"` + + // (String) Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. + // Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. + // +kubebuilder:validation:Optional + HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (String) Your private key ID found in your JSON service account key. + // Your private key ID found in your JSON service account key. + // +kubebuilder:validation:Optional + PrivateKeyID *string `json:"privateKeyId,omitempty" tf:"private_key_id,omitempty"` + + // (String, Sensitive) Your private key name found in your JSON service account key. + // Your private key name found in your JSON service account key. + // +kubebuilder:validation:Optional + PrivateKeySecretRef v1.SecretKeySelector `json:"privateKeySecretRef" tf:"-"` + + // (String) Your Google Cloud project ID found in your JSON service account key. + // Your Google Cloud project ID found in your JSON service account key. + // +kubebuilder:validation:Optional + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +// GCPSpec defines the desired state of GCP +type GCPSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider GCPParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider GCPInitParameters `json:"initProvider,omitempty"` +} + +// GCPStatus defines the observed state of GCP. +type GCPStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider GCPObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// GCP is the Schema for the GCPs API. This resource is deprecated — use the datadog_integration_gcp_sts resource instead. Provides a Datadog - Google Cloud Platform integration resource. This can be used to create and manage Datadog - Google Cloud Platform integration. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type GCP struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.clientEmail) || (has(self.initProvider) && has(self.initProvider.clientEmail))",message="spec.forProvider.clientEmail is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.clientId) || (has(self.initProvider) && has(self.initProvider.clientId))",message="spec.forProvider.clientId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.privateKeySecretRef)",message="spec.forProvider.privateKeySecretRef is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.privateKeyId) || (has(self.initProvider) && has(self.initProvider.privateKeyId))",message="spec.forProvider.privateKeyId is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.projectId) || (has(self.initProvider) && has(self.initProvider.projectId))",message="spec.forProvider.projectId is a required parameter" + Spec GCPSpec `json:"spec"` + Status GCPStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// GCPList contains a list of GCPs +type GCPList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []GCP `json:"items"` +} + +// Repository type metadata. +var ( + GCP_Kind = "GCP" + GCP_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: GCP_Kind}.String() + GCP_KindAPIVersion = GCP_Kind + "." + CRDGroupVersion.String() + GCP_GroupVersionKind = CRDGroupVersion.WithKind(GCP_Kind) +) + +func init() { + SchemeBuilder.Register(&GCP{}, &GCPList{}) +} diff --git a/apis/integration/v1alpha1/zz_gcpsts_terraformed.go b/apis/integration/v1alpha1/zz_gcpsts_terraformed.go new file mode 100755 index 0000000..c129b50 --- /dev/null +++ b/apis/integration/v1alpha1/zz_gcpsts_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this GCPSTS +func (mg *GCPSTS) GetTerraformResourceType() string { + return "datadog_integration_gcp_sts" +} + +// GetConnectionDetailsMapping for this GCPSTS +func (tr *GCPSTS) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this GCPSTS +func (tr *GCPSTS) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this GCPSTS +func (tr *GCPSTS) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this GCPSTS +func (tr *GCPSTS) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this GCPSTS +func (tr *GCPSTS) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this GCPSTS +func (tr *GCPSTS) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this GCPSTS +func (tr *GCPSTS) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this GCPSTS +func (tr *GCPSTS) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this GCPSTS using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *GCPSTS) LateInitialize(attrs []byte) (bool, error) { + params := &GCPSTSParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *GCPSTS) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_gcpsts_types.go b/apis/integration/v1alpha1/zz_gcpsts_types.go new file mode 100755 index 0000000..91004d3 --- /dev/null +++ b/apis/integration/v1alpha1/zz_gcpsts_types.go @@ -0,0 +1,151 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type GCPSTSInitParameters struct { + + // (Boolean) Silence monitors for expected GCE instance shutdowns. + // Silence monitors for expected GCE instance shutdowns. + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your service account email address. + // Your service account email address. + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (Set of String) Your Host Filters. + // Your Host Filters. + // +listType=set + HostFilters []*string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (Boolean) When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges. + // When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges. + IsCspmEnabled *bool `json:"isCspmEnabled,omitempty" tf:"is_cspm_enabled,omitempty"` +} + +type GCPSTSObservation struct { + + // (Boolean) Silence monitors for expected GCE instance shutdowns. + // Silence monitors for expected GCE instance shutdowns. + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your service account email address. + // Your service account email address. + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (String) Datadog's STS Delegate Email. + // Datadog's STS Delegate Email. + DelegateAccountEmail *string `json:"delegateAccountEmail,omitempty" tf:"delegate_account_email,omitempty"` + + // (Set of String) Your Host Filters. + // Your Host Filters. + // +listType=set + HostFilters []*string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges. + // When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges. + IsCspmEnabled *bool `json:"isCspmEnabled,omitempty" tf:"is_cspm_enabled,omitempty"` +} + +type GCPSTSParameters struct { + + // (Boolean) Silence monitors for expected GCE instance shutdowns. + // Silence monitors for expected GCE instance shutdowns. + // +kubebuilder:validation:Optional + Automute *bool `json:"automute,omitempty" tf:"automute,omitempty"` + + // (String) Your service account email address. + // Your service account email address. + // +kubebuilder:validation:Optional + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (Set of String) Your Host Filters. + // Your Host Filters. + // +kubebuilder:validation:Optional + // +listType=set + HostFilters []*string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (Boolean) When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges. + // When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges. + // +kubebuilder:validation:Optional + IsCspmEnabled *bool `json:"isCspmEnabled,omitempty" tf:"is_cspm_enabled,omitempty"` +} + +// GCPSTSSpec defines the desired state of GCPSTS +type GCPSTSSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider GCPSTSParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider GCPSTSInitParameters `json:"initProvider,omitempty"` +} + +// GCPSTSStatus defines the observed state of GCPSTS. +type GCPSTSStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider GCPSTSObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// GCPSTS is the Schema for the GCPSTSs API. Provides a Datadog Integration GCP Sts resource. This can be used to create and manage Datadog - Google Cloud Platform integration. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type GCPSTS struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.clientEmail) || (has(self.initProvider) && has(self.initProvider.clientEmail))",message="spec.forProvider.clientEmail is a required parameter" + Spec GCPSTSSpec `json:"spec"` + Status GCPSTSStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// GCPSTSList contains a list of GCPSTSs +type GCPSTSList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []GCPSTS `json:"items"` +} + +// Repository type metadata. +var ( + GCPSTS_Kind = "GCPSTS" + GCPSTS_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: GCPSTS_Kind}.String() + GCPSTS_KindAPIVersion = GCPSTS_Kind + "." + CRDGroupVersion.String() + GCPSTS_GroupVersionKind = CRDGroupVersion.WithKind(GCPSTS_Kind) +) + +func init() { + SchemeBuilder.Register(&GCPSTS{}, &GCPSTSList{}) +} diff --git a/apis/integration/v1alpha1/zz_generated.conversion_hubs.go b/apis/integration/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..c0e819e --- /dev/null +++ b/apis/integration/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,62 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *AWS) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *AWSEventBridge) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *AWSLambdaARN) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *AWSLogCollection) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *AWSTagFilter) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Azure) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *CloudflareAccount) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ConfluentAccount) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ConfluentResource) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *FastlyAccount) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *FastlyService) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *GCP) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *GCPSTS) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *OpsgenieServiceObject) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Pagerduty) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *PagerdutyServiceObject) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *SlackChannel) Hub() {} diff --git a/apis/integration/v1alpha1/zz_generated.deepcopy.go b/apis/integration/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..50fab55 --- /dev/null +++ b/apis/integration/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,3754 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "github.com/crossplane/crossplane-runtime/apis/common/v1" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWS) DeepCopyInto(out *AWS) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWS. +func (in *AWS) DeepCopy() *AWS { + if in == nil { + return nil + } + out := new(AWS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWS) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSEventBridge) DeepCopyInto(out *AWSEventBridge) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridge. +func (in *AWSEventBridge) DeepCopy() *AWSEventBridge { + if in == nil { + return nil + } + out := new(AWSEventBridge) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSEventBridge) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSEventBridgeInitParameters) DeepCopyInto(out *AWSEventBridgeInitParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.CreateEventBus != nil { + in, out := &in.CreateEventBus, &out.CreateEventBus + *out = new(bool) + **out = **in + } + if in.EventGeneratorName != nil { + in, out := &in.EventGeneratorName, &out.EventGeneratorName + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeInitParameters. +func (in *AWSEventBridgeInitParameters) DeepCopy() *AWSEventBridgeInitParameters { + if in == nil { + return nil + } + out := new(AWSEventBridgeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSEventBridgeList) DeepCopyInto(out *AWSEventBridgeList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]AWSEventBridge, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeList. +func (in *AWSEventBridgeList) DeepCopy() *AWSEventBridgeList { + if in == nil { + return nil + } + out := new(AWSEventBridgeList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSEventBridgeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSEventBridgeObservation) DeepCopyInto(out *AWSEventBridgeObservation) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.CreateEventBus != nil { + in, out := &in.CreateEventBus, &out.CreateEventBus + *out = new(bool) + **out = **in + } + if in.EventGeneratorName != nil { + in, out := &in.EventGeneratorName, &out.EventGeneratorName + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeObservation. +func (in *AWSEventBridgeObservation) DeepCopy() *AWSEventBridgeObservation { + if in == nil { + return nil + } + out := new(AWSEventBridgeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSEventBridgeParameters) DeepCopyInto(out *AWSEventBridgeParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.CreateEventBus != nil { + in, out := &in.CreateEventBus, &out.CreateEventBus + *out = new(bool) + **out = **in + } + if in.EventGeneratorName != nil { + in, out := &in.EventGeneratorName, &out.EventGeneratorName + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeParameters. +func (in *AWSEventBridgeParameters) DeepCopy() *AWSEventBridgeParameters { + if in == nil { + return nil + } + out := new(AWSEventBridgeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSEventBridgeSpec) DeepCopyInto(out *AWSEventBridgeSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeSpec. +func (in *AWSEventBridgeSpec) DeepCopy() *AWSEventBridgeSpec { + if in == nil { + return nil + } + out := new(AWSEventBridgeSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSEventBridgeStatus) DeepCopyInto(out *AWSEventBridgeStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeStatus. +func (in *AWSEventBridgeStatus) DeepCopy() *AWSEventBridgeStatus { + if in == nil { + return nil + } + out := new(AWSEventBridgeStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSInitParameters) DeepCopyInto(out *AWSInitParameters) { + *out = *in + if in.AccessKeyID != nil { + in, out := &in.AccessKeyID, &out.AccessKeyID + *out = new(string) + **out = **in + } + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.AccountSpecificNamespaceRules != nil { + in, out := &in.AccountSpecificNamespaceRules, &out.AccountSpecificNamespaceRules + *out = make(map[string]*bool, len(*in)) + for key, val := range *in { + var outVal *bool + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(bool) + **out = **in + } + (*out)[key] = outVal + } + } + if in.CspmResourceCollectionEnabled != nil { + in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled + *out = new(string) + **out = **in + } + if in.ExcludedRegions != nil { + in, out := &in.ExcludedRegions, &out.ExcludedRegions + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.FilterTags != nil { + in, out := &in.FilterTags, &out.FilterTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.HostTags != nil { + in, out := &in.HostTags, &out.HostTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MetricsCollectionEnabled != nil { + in, out := &in.MetricsCollectionEnabled, &out.MetricsCollectionEnabled + *out = new(string) + **out = **in + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(string) + **out = **in + } + if in.RoleName != nil { + in, out := &in.RoleName, &out.RoleName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSInitParameters. +func (in *AWSInitParameters) DeepCopy() *AWSInitParameters { + if in == nil { + return nil + } + out := new(AWSInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLambdaARN) DeepCopyInto(out *AWSLambdaARN) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARN. +func (in *AWSLambdaARN) DeepCopy() *AWSLambdaARN { + if in == nil { + return nil + } + out := new(AWSLambdaARN) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSLambdaARN) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLambdaARNInitParameters) DeepCopyInto(out *AWSLambdaARNInitParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.LambdaArn != nil { + in, out := &in.LambdaArn, &out.LambdaArn + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNInitParameters. +func (in *AWSLambdaARNInitParameters) DeepCopy() *AWSLambdaARNInitParameters { + if in == nil { + return nil + } + out := new(AWSLambdaARNInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLambdaARNList) DeepCopyInto(out *AWSLambdaARNList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]AWSLambdaARN, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNList. +func (in *AWSLambdaARNList) DeepCopy() *AWSLambdaARNList { + if in == nil { + return nil + } + out := new(AWSLambdaARNList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSLambdaARNList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLambdaARNObservation) DeepCopyInto(out *AWSLambdaARNObservation) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.LambdaArn != nil { + in, out := &in.LambdaArn, &out.LambdaArn + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNObservation. +func (in *AWSLambdaARNObservation) DeepCopy() *AWSLambdaARNObservation { + if in == nil { + return nil + } + out := new(AWSLambdaARNObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLambdaARNParameters) DeepCopyInto(out *AWSLambdaARNParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.LambdaArn != nil { + in, out := &in.LambdaArn, &out.LambdaArn + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNParameters. +func (in *AWSLambdaARNParameters) DeepCopy() *AWSLambdaARNParameters { + if in == nil { + return nil + } + out := new(AWSLambdaARNParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLambdaARNSpec) DeepCopyInto(out *AWSLambdaARNSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNSpec. +func (in *AWSLambdaARNSpec) DeepCopy() *AWSLambdaARNSpec { + if in == nil { + return nil + } + out := new(AWSLambdaARNSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLambdaARNStatus) DeepCopyInto(out *AWSLambdaARNStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNStatus. +func (in *AWSLambdaARNStatus) DeepCopy() *AWSLambdaARNStatus { + if in == nil { + return nil + } + out := new(AWSLambdaARNStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSList) DeepCopyInto(out *AWSList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]AWS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSList. +func (in *AWSList) DeepCopy() *AWSList { + if in == nil { + return nil + } + out := new(AWSList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLogCollection) DeepCopyInto(out *AWSLogCollection) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollection. +func (in *AWSLogCollection) DeepCopy() *AWSLogCollection { + if in == nil { + return nil + } + out := new(AWSLogCollection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSLogCollection) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLogCollectionInitParameters) DeepCopyInto(out *AWSLogCollectionInitParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.Services != nil { + in, out := &in.Services, &out.Services + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionInitParameters. +func (in *AWSLogCollectionInitParameters) DeepCopy() *AWSLogCollectionInitParameters { + if in == nil { + return nil + } + out := new(AWSLogCollectionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLogCollectionList) DeepCopyInto(out *AWSLogCollectionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]AWSLogCollection, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionList. +func (in *AWSLogCollectionList) DeepCopy() *AWSLogCollectionList { + if in == nil { + return nil + } + out := new(AWSLogCollectionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSLogCollectionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLogCollectionObservation) DeepCopyInto(out *AWSLogCollectionObservation) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Services != nil { + in, out := &in.Services, &out.Services + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionObservation. +func (in *AWSLogCollectionObservation) DeepCopy() *AWSLogCollectionObservation { + if in == nil { + return nil + } + out := new(AWSLogCollectionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLogCollectionParameters) DeepCopyInto(out *AWSLogCollectionParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.Services != nil { + in, out := &in.Services, &out.Services + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionParameters. +func (in *AWSLogCollectionParameters) DeepCopy() *AWSLogCollectionParameters { + if in == nil { + return nil + } + out := new(AWSLogCollectionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLogCollectionSpec) DeepCopyInto(out *AWSLogCollectionSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionSpec. +func (in *AWSLogCollectionSpec) DeepCopy() *AWSLogCollectionSpec { + if in == nil { + return nil + } + out := new(AWSLogCollectionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSLogCollectionStatus) DeepCopyInto(out *AWSLogCollectionStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionStatus. +func (in *AWSLogCollectionStatus) DeepCopy() *AWSLogCollectionStatus { + if in == nil { + return nil + } + out := new(AWSLogCollectionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSObservation) DeepCopyInto(out *AWSObservation) { + *out = *in + if in.AccessKeyID != nil { + in, out := &in.AccessKeyID, &out.AccessKeyID + *out = new(string) + **out = **in + } + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.AccountSpecificNamespaceRules != nil { + in, out := &in.AccountSpecificNamespaceRules, &out.AccountSpecificNamespaceRules + *out = make(map[string]*bool, len(*in)) + for key, val := range *in { + var outVal *bool + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(bool) + **out = **in + } + (*out)[key] = outVal + } + } + if in.CspmResourceCollectionEnabled != nil { + in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled + *out = new(string) + **out = **in + } + if in.ExcludedRegions != nil { + in, out := &in.ExcludedRegions, &out.ExcludedRegions + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ExternalID != nil { + in, out := &in.ExternalID, &out.ExternalID + *out = new(string) + **out = **in + } + if in.FilterTags != nil { + in, out := &in.FilterTags, &out.FilterTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.HostTags != nil { + in, out := &in.HostTags, &out.HostTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.MetricsCollectionEnabled != nil { + in, out := &in.MetricsCollectionEnabled, &out.MetricsCollectionEnabled + *out = new(string) + **out = **in + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(string) + **out = **in + } + if in.RoleName != nil { + in, out := &in.RoleName, &out.RoleName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSObservation. +func (in *AWSObservation) DeepCopy() *AWSObservation { + if in == nil { + return nil + } + out := new(AWSObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSParameters) DeepCopyInto(out *AWSParameters) { + *out = *in + if in.AccessKeyID != nil { + in, out := &in.AccessKeyID, &out.AccessKeyID + *out = new(string) + **out = **in + } + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.AccountSpecificNamespaceRules != nil { + in, out := &in.AccountSpecificNamespaceRules, &out.AccountSpecificNamespaceRules + *out = make(map[string]*bool, len(*in)) + for key, val := range *in { + var outVal *bool + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(bool) + **out = **in + } + (*out)[key] = outVal + } + } + if in.CspmResourceCollectionEnabled != nil { + in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled + *out = new(string) + **out = **in + } + if in.ExcludedRegions != nil { + in, out := &in.ExcludedRegions, &out.ExcludedRegions + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.FilterTags != nil { + in, out := &in.FilterTags, &out.FilterTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.HostTags != nil { + in, out := &in.HostTags, &out.HostTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MetricsCollectionEnabled != nil { + in, out := &in.MetricsCollectionEnabled, &out.MetricsCollectionEnabled + *out = new(string) + **out = **in + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(string) + **out = **in + } + if in.RoleName != nil { + in, out := &in.RoleName, &out.RoleName + *out = new(string) + **out = **in + } + if in.SecretAccessKeySecretRef != nil { + in, out := &in.SecretAccessKeySecretRef, &out.SecretAccessKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSParameters. +func (in *AWSParameters) DeepCopy() *AWSParameters { + if in == nil { + return nil + } + out := new(AWSParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSSpec) DeepCopyInto(out *AWSSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSSpec. +func (in *AWSSpec) DeepCopy() *AWSSpec { + if in == nil { + return nil + } + out := new(AWSSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSStatus) DeepCopyInto(out *AWSStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSStatus. +func (in *AWSStatus) DeepCopy() *AWSStatus { + if in == nil { + return nil + } + out := new(AWSStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSTagFilter) DeepCopyInto(out *AWSTagFilter) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilter. +func (in *AWSTagFilter) DeepCopy() *AWSTagFilter { + if in == nil { + return nil + } + out := new(AWSTagFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSTagFilter) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSTagFilterInitParameters) DeepCopyInto(out *AWSTagFilterInitParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.TagFilterStr != nil { + in, out := &in.TagFilterStr, &out.TagFilterStr + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterInitParameters. +func (in *AWSTagFilterInitParameters) DeepCopy() *AWSTagFilterInitParameters { + if in == nil { + return nil + } + out := new(AWSTagFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSTagFilterList) DeepCopyInto(out *AWSTagFilterList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]AWSTagFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterList. +func (in *AWSTagFilterList) DeepCopy() *AWSTagFilterList { + if in == nil { + return nil + } + out := new(AWSTagFilterList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AWSTagFilterList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSTagFilterObservation) DeepCopyInto(out *AWSTagFilterObservation) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.TagFilterStr != nil { + in, out := &in.TagFilterStr, &out.TagFilterStr + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterObservation. +func (in *AWSTagFilterObservation) DeepCopy() *AWSTagFilterObservation { + if in == nil { + return nil + } + out := new(AWSTagFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSTagFilterParameters) DeepCopyInto(out *AWSTagFilterParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.TagFilterStr != nil { + in, out := &in.TagFilterStr, &out.TagFilterStr + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterParameters. +func (in *AWSTagFilterParameters) DeepCopy() *AWSTagFilterParameters { + if in == nil { + return nil + } + out := new(AWSTagFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSTagFilterSpec) DeepCopyInto(out *AWSTagFilterSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterSpec. +func (in *AWSTagFilterSpec) DeepCopy() *AWSTagFilterSpec { + if in == nil { + return nil + } + out := new(AWSTagFilterSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSTagFilterStatus) DeepCopyInto(out *AWSTagFilterStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterStatus. +func (in *AWSTagFilterStatus) DeepCopy() *AWSTagFilterStatus { + if in == nil { + return nil + } + out := new(AWSTagFilterStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Azure) DeepCopyInto(out *Azure) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Azure. +func (in *Azure) DeepCopy() *Azure { + if in == nil { + return nil + } + out := new(Azure) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Azure) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureInitParameters) DeepCopyInto(out *AzureInitParameters) { + *out = *in + if in.AppServicePlanFilters != nil { + in, out := &in.AppServicePlanFilters, &out.AppServicePlanFilters + *out = new(string) + **out = **in + } + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.ContainerAppFilters != nil { + in, out := &in.ContainerAppFilters, &out.ContainerAppFilters + *out = new(string) + **out = **in + } + if in.CspmEnabled != nil { + in, out := &in.CspmEnabled, &out.CspmEnabled + *out = new(bool) + **out = **in + } + if in.CustomMetricsEnabled != nil { + in, out := &in.CustomMetricsEnabled, &out.CustomMetricsEnabled + *out = new(bool) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = new(string) + **out = **in + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } + if in.TenantName != nil { + in, out := &in.TenantName, &out.TenantName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureInitParameters. +func (in *AzureInitParameters) DeepCopy() *AzureInitParameters { + if in == nil { + return nil + } + out := new(AzureInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureList) DeepCopyInto(out *AzureList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Azure, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureList. +func (in *AzureList) DeepCopy() *AzureList { + if in == nil { + return nil + } + out := new(AzureList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AzureList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureObservation) DeepCopyInto(out *AzureObservation) { + *out = *in + if in.AppServicePlanFilters != nil { + in, out := &in.AppServicePlanFilters, &out.AppServicePlanFilters + *out = new(string) + **out = **in + } + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.ContainerAppFilters != nil { + in, out := &in.ContainerAppFilters, &out.ContainerAppFilters + *out = new(string) + **out = **in + } + if in.CspmEnabled != nil { + in, out := &in.CspmEnabled, &out.CspmEnabled + *out = new(bool) + **out = **in + } + if in.CustomMetricsEnabled != nil { + in, out := &in.CustomMetricsEnabled, &out.CustomMetricsEnabled + *out = new(bool) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } + if in.TenantName != nil { + in, out := &in.TenantName, &out.TenantName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureObservation. +func (in *AzureObservation) DeepCopy() *AzureObservation { + if in == nil { + return nil + } + out := new(AzureObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureParameters) DeepCopyInto(out *AzureParameters) { + *out = *in + if in.AppServicePlanFilters != nil { + in, out := &in.AppServicePlanFilters, &out.AppServicePlanFilters + *out = new(string) + **out = **in + } + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + out.ClientSecretSecretRef = in.ClientSecretSecretRef + if in.ContainerAppFilters != nil { + in, out := &in.ContainerAppFilters, &out.ContainerAppFilters + *out = new(string) + **out = **in + } + if in.CspmEnabled != nil { + in, out := &in.CspmEnabled, &out.CspmEnabled + *out = new(bool) + **out = **in + } + if in.CustomMetricsEnabled != nil { + in, out := &in.CustomMetricsEnabled, &out.CustomMetricsEnabled + *out = new(bool) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = new(string) + **out = **in + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } + if in.TenantName != nil { + in, out := &in.TenantName, &out.TenantName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureParameters. +func (in *AzureParameters) DeepCopy() *AzureParameters { + if in == nil { + return nil + } + out := new(AzureParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureSpec) DeepCopyInto(out *AzureSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureSpec. +func (in *AzureSpec) DeepCopy() *AzureSpec { + if in == nil { + return nil + } + out := new(AzureSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureStatus) DeepCopyInto(out *AzureStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureStatus. +func (in *AzureStatus) DeepCopy() *AzureStatus { + if in == nil { + return nil + } + out := new(AzureStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudflareAccount) DeepCopyInto(out *CloudflareAccount) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudflareAccount. +func (in *CloudflareAccount) DeepCopy() *CloudflareAccount { + if in == nil { + return nil + } + out := new(CloudflareAccount) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CloudflareAccount) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudflareAccountInitParameters) DeepCopyInto(out *CloudflareAccountInitParameters) { + *out = *in + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudflareAccountInitParameters. +func (in *CloudflareAccountInitParameters) DeepCopy() *CloudflareAccountInitParameters { + if in == nil { + return nil + } + out := new(CloudflareAccountInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudflareAccountList) DeepCopyInto(out *CloudflareAccountList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CloudflareAccount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudflareAccountList. +func (in *CloudflareAccountList) DeepCopy() *CloudflareAccountList { + if in == nil { + return nil + } + out := new(CloudflareAccountList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CloudflareAccountList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudflareAccountObservation) DeepCopyInto(out *CloudflareAccountObservation) { + *out = *in + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudflareAccountObservation. +func (in *CloudflareAccountObservation) DeepCopy() *CloudflareAccountObservation { + if in == nil { + return nil + } + out := new(CloudflareAccountObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudflareAccountParameters) DeepCopyInto(out *CloudflareAccountParameters) { + *out = *in + out.APIKeySecretRef = in.APIKeySecretRef + if in.Email != nil { + in, out := &in.Email, &out.Email + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudflareAccountParameters. +func (in *CloudflareAccountParameters) DeepCopy() *CloudflareAccountParameters { + if in == nil { + return nil + } + out := new(CloudflareAccountParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudflareAccountSpec) DeepCopyInto(out *CloudflareAccountSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudflareAccountSpec. +func (in *CloudflareAccountSpec) DeepCopy() *CloudflareAccountSpec { + if in == nil { + return nil + } + out := new(CloudflareAccountSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudflareAccountStatus) DeepCopyInto(out *CloudflareAccountStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudflareAccountStatus. +func (in *CloudflareAccountStatus) DeepCopy() *CloudflareAccountStatus { + if in == nil { + return nil + } + out := new(CloudflareAccountStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentAccount) DeepCopyInto(out *ConfluentAccount) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentAccount. +func (in *ConfluentAccount) DeepCopy() *ConfluentAccount { + if in == nil { + return nil + } + out := new(ConfluentAccount) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfluentAccount) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentAccountInitParameters) DeepCopyInto(out *ConfluentAccountInitParameters) { + *out = *in + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentAccountInitParameters. +func (in *ConfluentAccountInitParameters) DeepCopy() *ConfluentAccountInitParameters { + if in == nil { + return nil + } + out := new(ConfluentAccountInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentAccountList) DeepCopyInto(out *ConfluentAccountList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfluentAccount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentAccountList. +func (in *ConfluentAccountList) DeepCopy() *ConfluentAccountList { + if in == nil { + return nil + } + out := new(ConfluentAccountList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfluentAccountList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentAccountObservation) DeepCopyInto(out *ConfluentAccountObservation) { + *out = *in + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentAccountObservation. +func (in *ConfluentAccountObservation) DeepCopy() *ConfluentAccountObservation { + if in == nil { + return nil + } + out := new(ConfluentAccountObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentAccountParameters) DeepCopyInto(out *ConfluentAccountParameters) { + *out = *in + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = new(string) + **out = **in + } + out.APISecretSecretRef = in.APISecretSecretRef + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentAccountParameters. +func (in *ConfluentAccountParameters) DeepCopy() *ConfluentAccountParameters { + if in == nil { + return nil + } + out := new(ConfluentAccountParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentAccountSpec) DeepCopyInto(out *ConfluentAccountSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentAccountSpec. +func (in *ConfluentAccountSpec) DeepCopy() *ConfluentAccountSpec { + if in == nil { + return nil + } + out := new(ConfluentAccountSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentAccountStatus) DeepCopyInto(out *ConfluentAccountStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentAccountStatus. +func (in *ConfluentAccountStatus) DeepCopy() *ConfluentAccountStatus { + if in == nil { + return nil + } + out := new(ConfluentAccountStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentResource) DeepCopyInto(out *ConfluentResource) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentResource. +func (in *ConfluentResource) DeepCopy() *ConfluentResource { + if in == nil { + return nil + } + out := new(ConfluentResource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfluentResource) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentResourceInitParameters) DeepCopyInto(out *ConfluentResourceInitParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.EnableCustomMetrics != nil { + in, out := &in.EnableCustomMetrics, &out.EnableCustomMetrics + *out = new(bool) + **out = **in + } + if in.ResourceID != nil { + in, out := &in.ResourceID, &out.ResourceID + *out = new(string) + **out = **in + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentResourceInitParameters. +func (in *ConfluentResourceInitParameters) DeepCopy() *ConfluentResourceInitParameters { + if in == nil { + return nil + } + out := new(ConfluentResourceInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentResourceList) DeepCopyInto(out *ConfluentResourceList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfluentResource, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentResourceList. +func (in *ConfluentResourceList) DeepCopy() *ConfluentResourceList { + if in == nil { + return nil + } + out := new(ConfluentResourceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfluentResourceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentResourceObservation) DeepCopyInto(out *ConfluentResourceObservation) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.EnableCustomMetrics != nil { + in, out := &in.EnableCustomMetrics, &out.EnableCustomMetrics + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ResourceID != nil { + in, out := &in.ResourceID, &out.ResourceID + *out = new(string) + **out = **in + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentResourceObservation. +func (in *ConfluentResourceObservation) DeepCopy() *ConfluentResourceObservation { + if in == nil { + return nil + } + out := new(ConfluentResourceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentResourceParameters) DeepCopyInto(out *ConfluentResourceParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.EnableCustomMetrics != nil { + in, out := &in.EnableCustomMetrics, &out.EnableCustomMetrics + *out = new(bool) + **out = **in + } + if in.ResourceID != nil { + in, out := &in.ResourceID, &out.ResourceID + *out = new(string) + **out = **in + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentResourceParameters. +func (in *ConfluentResourceParameters) DeepCopy() *ConfluentResourceParameters { + if in == nil { + return nil + } + out := new(ConfluentResourceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentResourceSpec) DeepCopyInto(out *ConfluentResourceSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentResourceSpec. +func (in *ConfluentResourceSpec) DeepCopy() *ConfluentResourceSpec { + if in == nil { + return nil + } + out := new(ConfluentResourceSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfluentResourceStatus) DeepCopyInto(out *ConfluentResourceStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfluentResourceStatus. +func (in *ConfluentResourceStatus) DeepCopy() *ConfluentResourceStatus { + if in == nil { + return nil + } + out := new(ConfluentResourceStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DisplayInitParameters) DeepCopyInto(out *DisplayInitParameters) { + *out = *in + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(bool) + **out = **in + } + if in.Notified != nil { + in, out := &in.Notified, &out.Notified + *out = new(bool) + **out = **in + } + if in.Snapshot != nil { + in, out := &in.Snapshot, &out.Snapshot + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DisplayInitParameters. +func (in *DisplayInitParameters) DeepCopy() *DisplayInitParameters { + if in == nil { + return nil + } + out := new(DisplayInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DisplayObservation) DeepCopyInto(out *DisplayObservation) { + *out = *in + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(bool) + **out = **in + } + if in.Notified != nil { + in, out := &in.Notified, &out.Notified + *out = new(bool) + **out = **in + } + if in.Snapshot != nil { + in, out := &in.Snapshot, &out.Snapshot + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DisplayObservation. +func (in *DisplayObservation) DeepCopy() *DisplayObservation { + if in == nil { + return nil + } + out := new(DisplayObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DisplayParameters) DeepCopyInto(out *DisplayParameters) { + *out = *in + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(bool) + **out = **in + } + if in.Notified != nil { + in, out := &in.Notified, &out.Notified + *out = new(bool) + **out = **in + } + if in.Snapshot != nil { + in, out := &in.Snapshot, &out.Snapshot + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DisplayParameters. +func (in *DisplayParameters) DeepCopy() *DisplayParameters { + if in == nil { + return nil + } + out := new(DisplayParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyAccount) DeepCopyInto(out *FastlyAccount) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyAccount. +func (in *FastlyAccount) DeepCopy() *FastlyAccount { + if in == nil { + return nil + } + out := new(FastlyAccount) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FastlyAccount) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyAccountInitParameters) DeepCopyInto(out *FastlyAccountInitParameters) { + *out = *in + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyAccountInitParameters. +func (in *FastlyAccountInitParameters) DeepCopy() *FastlyAccountInitParameters { + if in == nil { + return nil + } + out := new(FastlyAccountInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyAccountList) DeepCopyInto(out *FastlyAccountList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FastlyAccount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyAccountList. +func (in *FastlyAccountList) DeepCopy() *FastlyAccountList { + if in == nil { + return nil + } + out := new(FastlyAccountList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FastlyAccountList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyAccountObservation) DeepCopyInto(out *FastlyAccountObservation) { + *out = *in + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyAccountObservation. +func (in *FastlyAccountObservation) DeepCopy() *FastlyAccountObservation { + if in == nil { + return nil + } + out := new(FastlyAccountObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyAccountParameters) DeepCopyInto(out *FastlyAccountParameters) { + *out = *in + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyAccountParameters. +func (in *FastlyAccountParameters) DeepCopy() *FastlyAccountParameters { + if in == nil { + return nil + } + out := new(FastlyAccountParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyAccountSpec) DeepCopyInto(out *FastlyAccountSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyAccountSpec. +func (in *FastlyAccountSpec) DeepCopy() *FastlyAccountSpec { + if in == nil { + return nil + } + out := new(FastlyAccountSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyAccountStatus) DeepCopyInto(out *FastlyAccountStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyAccountStatus. +func (in *FastlyAccountStatus) DeepCopy() *FastlyAccountStatus { + if in == nil { + return nil + } + out := new(FastlyAccountStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyService) DeepCopyInto(out *FastlyService) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyService. +func (in *FastlyService) DeepCopy() *FastlyService { + if in == nil { + return nil + } + out := new(FastlyService) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FastlyService) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyServiceInitParameters) DeepCopyInto(out *FastlyServiceInitParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.ServiceID != nil { + in, out := &in.ServiceID, &out.ServiceID + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyServiceInitParameters. +func (in *FastlyServiceInitParameters) DeepCopy() *FastlyServiceInitParameters { + if in == nil { + return nil + } + out := new(FastlyServiceInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyServiceList) DeepCopyInto(out *FastlyServiceList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FastlyService, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyServiceList. +func (in *FastlyServiceList) DeepCopy() *FastlyServiceList { + if in == nil { + return nil + } + out := new(FastlyServiceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FastlyServiceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyServiceObservation) DeepCopyInto(out *FastlyServiceObservation) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ServiceID != nil { + in, out := &in.ServiceID, &out.ServiceID + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyServiceObservation. +func (in *FastlyServiceObservation) DeepCopy() *FastlyServiceObservation { + if in == nil { + return nil + } + out := new(FastlyServiceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyServiceParameters) DeepCopyInto(out *FastlyServiceParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.ServiceID != nil { + in, out := &in.ServiceID, &out.ServiceID + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyServiceParameters. +func (in *FastlyServiceParameters) DeepCopy() *FastlyServiceParameters { + if in == nil { + return nil + } + out := new(FastlyServiceParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyServiceSpec) DeepCopyInto(out *FastlyServiceSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyServiceSpec. +func (in *FastlyServiceSpec) DeepCopy() *FastlyServiceSpec { + if in == nil { + return nil + } + out := new(FastlyServiceSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FastlyServiceStatus) DeepCopyInto(out *FastlyServiceStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FastlyServiceStatus. +func (in *FastlyServiceStatus) DeepCopy() *FastlyServiceStatus { + if in == nil { + return nil + } + out := new(FastlyServiceStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCP) DeepCopyInto(out *GCP) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCP. +func (in *GCP) DeepCopy() *GCP { + if in == nil { + return nil + } + out := new(GCP) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GCP) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPInitParameters) DeepCopyInto(out *GCPInitParameters) { + *out = *in + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.CspmResourceCollectionEnabled != nil { + in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled + *out = new(bool) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = new(string) + **out = **in + } + if in.PrivateKeyID != nil { + in, out := &in.PrivateKeyID, &out.PrivateKeyID + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPInitParameters. +func (in *GCPInitParameters) DeepCopy() *GCPInitParameters { + if in == nil { + return nil + } + out := new(GCPInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPList) DeepCopyInto(out *GCPList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]GCP, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPList. +func (in *GCPList) DeepCopy() *GCPList { + if in == nil { + return nil + } + out := new(GCPList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GCPList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPObservation) DeepCopyInto(out *GCPObservation) { + *out = *in + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.CspmResourceCollectionEnabled != nil { + in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled + *out = new(bool) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.PrivateKeyID != nil { + in, out := &in.PrivateKeyID, &out.PrivateKeyID + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPObservation. +func (in *GCPObservation) DeepCopy() *GCPObservation { + if in == nil { + return nil + } + out := new(GCPObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPParameters) DeepCopyInto(out *GCPParameters) { + *out = *in + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.CspmResourceCollectionEnabled != nil { + in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled + *out = new(bool) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = new(string) + **out = **in + } + if in.PrivateKeyID != nil { + in, out := &in.PrivateKeyID, &out.PrivateKeyID + *out = new(string) + **out = **in + } + out.PrivateKeySecretRef = in.PrivateKeySecretRef + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPParameters. +func (in *GCPParameters) DeepCopy() *GCPParameters { + if in == nil { + return nil + } + out := new(GCPParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSTS) DeepCopyInto(out *GCPSTS) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTS. +func (in *GCPSTS) DeepCopy() *GCPSTS { + if in == nil { + return nil + } + out := new(GCPSTS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GCPSTS) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSTSInitParameters) DeepCopyInto(out *GCPSTSInitParameters) { + *out = *in + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.IsCspmEnabled != nil { + in, out := &in.IsCspmEnabled, &out.IsCspmEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSInitParameters. +func (in *GCPSTSInitParameters) DeepCopy() *GCPSTSInitParameters { + if in == nil { + return nil + } + out := new(GCPSTSInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSTSList) DeepCopyInto(out *GCPSTSList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]GCPSTS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSList. +func (in *GCPSTSList) DeepCopy() *GCPSTSList { + if in == nil { + return nil + } + out := new(GCPSTSList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GCPSTSList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSTSObservation) DeepCopyInto(out *GCPSTSObservation) { + *out = *in + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.DelegateAccountEmail != nil { + in, out := &in.DelegateAccountEmail, &out.DelegateAccountEmail + *out = new(string) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IsCspmEnabled != nil { + in, out := &in.IsCspmEnabled, &out.IsCspmEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSObservation. +func (in *GCPSTSObservation) DeepCopy() *GCPSTSObservation { + if in == nil { + return nil + } + out := new(GCPSTSObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSTSParameters) DeepCopyInto(out *GCPSTSParameters) { + *out = *in + if in.Automute != nil { + in, out := &in.Automute, &out.Automute + *out = new(bool) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.HostFilters != nil { + in, out := &in.HostFilters, &out.HostFilters + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.IsCspmEnabled != nil { + in, out := &in.IsCspmEnabled, &out.IsCspmEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSParameters. +func (in *GCPSTSParameters) DeepCopy() *GCPSTSParameters { + if in == nil { + return nil + } + out := new(GCPSTSParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSTSSpec) DeepCopyInto(out *GCPSTSSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSSpec. +func (in *GCPSTSSpec) DeepCopy() *GCPSTSSpec { + if in == nil { + return nil + } + out := new(GCPSTSSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSTSStatus) DeepCopyInto(out *GCPSTSStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSStatus. +func (in *GCPSTSStatus) DeepCopy() *GCPSTSStatus { + if in == nil { + return nil + } + out := new(GCPSTSStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPSpec) DeepCopyInto(out *GCPSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSpec. +func (in *GCPSpec) DeepCopy() *GCPSpec { + if in == nil { + return nil + } + out := new(GCPSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCPStatus) DeepCopyInto(out *GCPStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPStatus. +func (in *GCPStatus) DeepCopy() *GCPStatus { + if in == nil { + return nil + } + out := new(GCPStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieServiceObject) DeepCopyInto(out *OpsgenieServiceObject) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpsgenieServiceObject. +func (in *OpsgenieServiceObject) DeepCopy() *OpsgenieServiceObject { + if in == nil { + return nil + } + out := new(OpsgenieServiceObject) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OpsgenieServiceObject) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieServiceObjectInitParameters) DeepCopyInto(out *OpsgenieServiceObjectInitParameters) { + *out = *in + if in.CustomURL != nil { + in, out := &in.CustomURL, &out.CustomURL + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpsgenieServiceObjectInitParameters. +func (in *OpsgenieServiceObjectInitParameters) DeepCopy() *OpsgenieServiceObjectInitParameters { + if in == nil { + return nil + } + out := new(OpsgenieServiceObjectInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieServiceObjectList) DeepCopyInto(out *OpsgenieServiceObjectList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]OpsgenieServiceObject, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpsgenieServiceObjectList. +func (in *OpsgenieServiceObjectList) DeepCopy() *OpsgenieServiceObjectList { + if in == nil { + return nil + } + out := new(OpsgenieServiceObjectList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OpsgenieServiceObjectList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieServiceObjectObservation) DeepCopyInto(out *OpsgenieServiceObjectObservation) { + *out = *in + if in.CustomURL != nil { + in, out := &in.CustomURL, &out.CustomURL + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpsgenieServiceObjectObservation. +func (in *OpsgenieServiceObjectObservation) DeepCopy() *OpsgenieServiceObjectObservation { + if in == nil { + return nil + } + out := new(OpsgenieServiceObjectObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieServiceObjectParameters) DeepCopyInto(out *OpsgenieServiceObjectParameters) { + *out = *in + if in.CustomURL != nil { + in, out := &in.CustomURL, &out.CustomURL + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + out.OpsgenieAPIKeySecretRef = in.OpsgenieAPIKeySecretRef + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpsgenieServiceObjectParameters. +func (in *OpsgenieServiceObjectParameters) DeepCopy() *OpsgenieServiceObjectParameters { + if in == nil { + return nil + } + out := new(OpsgenieServiceObjectParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieServiceObjectSpec) DeepCopyInto(out *OpsgenieServiceObjectSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpsgenieServiceObjectSpec. +func (in *OpsgenieServiceObjectSpec) DeepCopy() *OpsgenieServiceObjectSpec { + if in == nil { + return nil + } + out := new(OpsgenieServiceObjectSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieServiceObjectStatus) DeepCopyInto(out *OpsgenieServiceObjectStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpsgenieServiceObjectStatus. +func (in *OpsgenieServiceObjectStatus) DeepCopy() *OpsgenieServiceObjectStatus { + if in == nil { + return nil + } + out := new(OpsgenieServiceObjectStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Pagerduty) DeepCopyInto(out *Pagerduty) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pagerduty. +func (in *Pagerduty) DeepCopy() *Pagerduty { + if in == nil { + return nil + } + out := new(Pagerduty) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Pagerduty) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyInitParameters) DeepCopyInto(out *PagerdutyInitParameters) { + *out = *in + if in.Schedules != nil { + in, out := &in.Schedules, &out.Schedules + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Subdomain != nil { + in, out := &in.Subdomain, &out.Subdomain + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyInitParameters. +func (in *PagerdutyInitParameters) DeepCopy() *PagerdutyInitParameters { + if in == nil { + return nil + } + out := new(PagerdutyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyList) DeepCopyInto(out *PagerdutyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Pagerduty, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyList. +func (in *PagerdutyList) DeepCopy() *PagerdutyList { + if in == nil { + return nil + } + out := new(PagerdutyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PagerdutyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyObservation) DeepCopyInto(out *PagerdutyObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Schedules != nil { + in, out := &in.Schedules, &out.Schedules + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Subdomain != nil { + in, out := &in.Subdomain, &out.Subdomain + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyObservation. +func (in *PagerdutyObservation) DeepCopy() *PagerdutyObservation { + if in == nil { + return nil + } + out := new(PagerdutyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyParameters) DeepCopyInto(out *PagerdutyParameters) { + *out = *in + if in.APITokenSecretRef != nil { + in, out := &in.APITokenSecretRef, &out.APITokenSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.Schedules != nil { + in, out := &in.Schedules, &out.Schedules + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Subdomain != nil { + in, out := &in.Subdomain, &out.Subdomain + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyParameters. +func (in *PagerdutyParameters) DeepCopy() *PagerdutyParameters { + if in == nil { + return nil + } + out := new(PagerdutyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyServiceObject) DeepCopyInto(out *PagerdutyServiceObject) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyServiceObject. +func (in *PagerdutyServiceObject) DeepCopy() *PagerdutyServiceObject { + if in == nil { + return nil + } + out := new(PagerdutyServiceObject) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PagerdutyServiceObject) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyServiceObjectInitParameters) DeepCopyInto(out *PagerdutyServiceObjectInitParameters) { + *out = *in + if in.ServiceName != nil { + in, out := &in.ServiceName, &out.ServiceName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyServiceObjectInitParameters. +func (in *PagerdutyServiceObjectInitParameters) DeepCopy() *PagerdutyServiceObjectInitParameters { + if in == nil { + return nil + } + out := new(PagerdutyServiceObjectInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyServiceObjectList) DeepCopyInto(out *PagerdutyServiceObjectList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PagerdutyServiceObject, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyServiceObjectList. +func (in *PagerdutyServiceObjectList) DeepCopy() *PagerdutyServiceObjectList { + if in == nil { + return nil + } + out := new(PagerdutyServiceObjectList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PagerdutyServiceObjectList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyServiceObjectObservation) DeepCopyInto(out *PagerdutyServiceObjectObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ServiceName != nil { + in, out := &in.ServiceName, &out.ServiceName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyServiceObjectObservation. +func (in *PagerdutyServiceObjectObservation) DeepCopy() *PagerdutyServiceObjectObservation { + if in == nil { + return nil + } + out := new(PagerdutyServiceObjectObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyServiceObjectParameters) DeepCopyInto(out *PagerdutyServiceObjectParameters) { + *out = *in + out.ServiceKeySecretRef = in.ServiceKeySecretRef + if in.ServiceName != nil { + in, out := &in.ServiceName, &out.ServiceName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyServiceObjectParameters. +func (in *PagerdutyServiceObjectParameters) DeepCopy() *PagerdutyServiceObjectParameters { + if in == nil { + return nil + } + out := new(PagerdutyServiceObjectParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyServiceObjectSpec) DeepCopyInto(out *PagerdutyServiceObjectSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyServiceObjectSpec. +func (in *PagerdutyServiceObjectSpec) DeepCopy() *PagerdutyServiceObjectSpec { + if in == nil { + return nil + } + out := new(PagerdutyServiceObjectSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyServiceObjectStatus) DeepCopyInto(out *PagerdutyServiceObjectStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyServiceObjectStatus. +func (in *PagerdutyServiceObjectStatus) DeepCopy() *PagerdutyServiceObjectStatus { + if in == nil { + return nil + } + out := new(PagerdutyServiceObjectStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutySpec) DeepCopyInto(out *PagerdutySpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutySpec. +func (in *PagerdutySpec) DeepCopy() *PagerdutySpec { + if in == nil { + return nil + } + out := new(PagerdutySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerdutyStatus) DeepCopyInto(out *PagerdutyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerdutyStatus. +func (in *PagerdutyStatus) DeepCopy() *PagerdutyStatus { + if in == nil { + return nil + } + out := new(PagerdutyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackChannel) DeepCopyInto(out *SlackChannel) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackChannel. +func (in *SlackChannel) DeepCopy() *SlackChannel { + if in == nil { + return nil + } + out := new(SlackChannel) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SlackChannel) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackChannelInitParameters) DeepCopyInto(out *SlackChannelInitParameters) { + *out = *in + if in.AccountName != nil { + in, out := &in.AccountName, &out.AccountName + *out = new(string) + **out = **in + } + if in.ChannelName != nil { + in, out := &in.ChannelName, &out.ChannelName + *out = new(string) + **out = **in + } + if in.Display != nil { + in, out := &in.Display, &out.Display + *out = make([]DisplayInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackChannelInitParameters. +func (in *SlackChannelInitParameters) DeepCopy() *SlackChannelInitParameters { + if in == nil { + return nil + } + out := new(SlackChannelInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackChannelList) DeepCopyInto(out *SlackChannelList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]SlackChannel, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackChannelList. +func (in *SlackChannelList) DeepCopy() *SlackChannelList { + if in == nil { + return nil + } + out := new(SlackChannelList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SlackChannelList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackChannelObservation) DeepCopyInto(out *SlackChannelObservation) { + *out = *in + if in.AccountName != nil { + in, out := &in.AccountName, &out.AccountName + *out = new(string) + **out = **in + } + if in.ChannelName != nil { + in, out := &in.ChannelName, &out.ChannelName + *out = new(string) + **out = **in + } + if in.Display != nil { + in, out := &in.Display, &out.Display + *out = make([]DisplayObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackChannelObservation. +func (in *SlackChannelObservation) DeepCopy() *SlackChannelObservation { + if in == nil { + return nil + } + out := new(SlackChannelObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackChannelParameters) DeepCopyInto(out *SlackChannelParameters) { + *out = *in + if in.AccountName != nil { + in, out := &in.AccountName, &out.AccountName + *out = new(string) + **out = **in + } + if in.ChannelName != nil { + in, out := &in.ChannelName, &out.ChannelName + *out = new(string) + **out = **in + } + if in.Display != nil { + in, out := &in.Display, &out.Display + *out = make([]DisplayParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackChannelParameters. +func (in *SlackChannelParameters) DeepCopy() *SlackChannelParameters { + if in == nil { + return nil + } + out := new(SlackChannelParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackChannelSpec) DeepCopyInto(out *SlackChannelSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackChannelSpec. +func (in *SlackChannelSpec) DeepCopy() *SlackChannelSpec { + if in == nil { + return nil + } + out := new(SlackChannelSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackChannelStatus) DeepCopyInto(out *SlackChannelStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackChannelStatus. +func (in *SlackChannelStatus) DeepCopy() *SlackChannelStatus { + if in == nil { + return nil + } + out := new(SlackChannelStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/integration/v1alpha1/zz_generated.managed.go b/apis/integration/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..ad56d27 --- /dev/null +++ b/apis/integration/v1alpha1/zz_generated.managed.go @@ -0,0 +1,1028 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this AWS. +func (mg *AWS) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this AWS. +func (mg *AWS) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this AWS. +func (mg *AWS) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this AWS. +func (mg *AWS) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this AWS. +func (mg *AWS) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this AWS. +func (mg *AWS) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this AWS. +func (mg *AWS) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this AWS. +func (mg *AWS) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this AWS. +func (mg *AWS) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this AWS. +func (mg *AWS) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this AWS. +func (mg *AWS) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this AWS. +func (mg *AWS) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this AWSEventBridge. +func (mg *AWSEventBridge) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this AWSEventBridge. +func (mg *AWSEventBridge) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this AWSEventBridge. +func (mg *AWSEventBridge) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this AWSEventBridge. +func (mg *AWSEventBridge) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this AWSEventBridge. +func (mg *AWSEventBridge) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this AWSEventBridge. +func (mg *AWSEventBridge) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this AWSEventBridge. +func (mg *AWSEventBridge) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this AWSEventBridge. +func (mg *AWSEventBridge) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this AWSEventBridge. +func (mg *AWSEventBridge) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this AWSEventBridge. +func (mg *AWSEventBridge) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this AWSEventBridge. +func (mg *AWSEventBridge) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this AWSEventBridge. +func (mg *AWSEventBridge) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this AWSLambdaARN. +func (mg *AWSLambdaARN) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this AWSLambdaARN. +func (mg *AWSLambdaARN) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this AWSLambdaARN. +func (mg *AWSLambdaARN) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this AWSLambdaARN. +func (mg *AWSLambdaARN) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this AWSLambdaARN. +func (mg *AWSLambdaARN) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this AWSLambdaARN. +func (mg *AWSLambdaARN) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this AWSLambdaARN. +func (mg *AWSLambdaARN) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this AWSLambdaARN. +func (mg *AWSLambdaARN) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this AWSLambdaARN. +func (mg *AWSLambdaARN) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this AWSLambdaARN. +func (mg *AWSLambdaARN) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this AWSLambdaARN. +func (mg *AWSLambdaARN) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this AWSLambdaARN. +func (mg *AWSLambdaARN) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this AWSLogCollection. +func (mg *AWSLogCollection) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this AWSLogCollection. +func (mg *AWSLogCollection) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this AWSLogCollection. +func (mg *AWSLogCollection) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this AWSLogCollection. +func (mg *AWSLogCollection) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this AWSLogCollection. +func (mg *AWSLogCollection) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this AWSLogCollection. +func (mg *AWSLogCollection) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this AWSLogCollection. +func (mg *AWSLogCollection) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this AWSLogCollection. +func (mg *AWSLogCollection) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this AWSLogCollection. +func (mg *AWSLogCollection) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this AWSLogCollection. +func (mg *AWSLogCollection) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this AWSLogCollection. +func (mg *AWSLogCollection) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this AWSLogCollection. +func (mg *AWSLogCollection) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this AWSTagFilter. +func (mg *AWSTagFilter) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this AWSTagFilter. +func (mg *AWSTagFilter) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this AWSTagFilter. +func (mg *AWSTagFilter) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this AWSTagFilter. +func (mg *AWSTagFilter) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this AWSTagFilter. +func (mg *AWSTagFilter) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this AWSTagFilter. +func (mg *AWSTagFilter) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this AWSTagFilter. +func (mg *AWSTagFilter) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this AWSTagFilter. +func (mg *AWSTagFilter) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this AWSTagFilter. +func (mg *AWSTagFilter) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this AWSTagFilter. +func (mg *AWSTagFilter) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this AWSTagFilter. +func (mg *AWSTagFilter) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this AWSTagFilter. +func (mg *AWSTagFilter) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Azure. +func (mg *Azure) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Azure. +func (mg *Azure) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Azure. +func (mg *Azure) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Azure. +func (mg *Azure) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Azure. +func (mg *Azure) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Azure. +func (mg *Azure) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Azure. +func (mg *Azure) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Azure. +func (mg *Azure) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Azure. +func (mg *Azure) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Azure. +func (mg *Azure) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Azure. +func (mg *Azure) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Azure. +func (mg *Azure) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this CloudflareAccount. +func (mg *CloudflareAccount) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this CloudflareAccount. +func (mg *CloudflareAccount) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this CloudflareAccount. +func (mg *CloudflareAccount) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this CloudflareAccount. +func (mg *CloudflareAccount) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this CloudflareAccount. +func (mg *CloudflareAccount) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this CloudflareAccount. +func (mg *CloudflareAccount) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this CloudflareAccount. +func (mg *CloudflareAccount) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this CloudflareAccount. +func (mg *CloudflareAccount) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this CloudflareAccount. +func (mg *CloudflareAccount) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this CloudflareAccount. +func (mg *CloudflareAccount) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this CloudflareAccount. +func (mg *CloudflareAccount) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this CloudflareAccount. +func (mg *CloudflareAccount) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ConfluentAccount. +func (mg *ConfluentAccount) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ConfluentAccount. +func (mg *ConfluentAccount) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ConfluentAccount. +func (mg *ConfluentAccount) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ConfluentAccount. +func (mg *ConfluentAccount) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ConfluentAccount. +func (mg *ConfluentAccount) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ConfluentAccount. +func (mg *ConfluentAccount) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ConfluentAccount. +func (mg *ConfluentAccount) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ConfluentAccount. +func (mg *ConfluentAccount) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ConfluentAccount. +func (mg *ConfluentAccount) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ConfluentAccount. +func (mg *ConfluentAccount) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ConfluentAccount. +func (mg *ConfluentAccount) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ConfluentAccount. +func (mg *ConfluentAccount) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ConfluentResource. +func (mg *ConfluentResource) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ConfluentResource. +func (mg *ConfluentResource) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ConfluentResource. +func (mg *ConfluentResource) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ConfluentResource. +func (mg *ConfluentResource) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ConfluentResource. +func (mg *ConfluentResource) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ConfluentResource. +func (mg *ConfluentResource) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ConfluentResource. +func (mg *ConfluentResource) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ConfluentResource. +func (mg *ConfluentResource) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ConfluentResource. +func (mg *ConfluentResource) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ConfluentResource. +func (mg *ConfluentResource) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ConfluentResource. +func (mg *ConfluentResource) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ConfluentResource. +func (mg *ConfluentResource) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this FastlyAccount. +func (mg *FastlyAccount) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this FastlyAccount. +func (mg *FastlyAccount) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this FastlyAccount. +func (mg *FastlyAccount) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this FastlyAccount. +func (mg *FastlyAccount) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this FastlyAccount. +func (mg *FastlyAccount) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this FastlyAccount. +func (mg *FastlyAccount) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this FastlyAccount. +func (mg *FastlyAccount) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this FastlyAccount. +func (mg *FastlyAccount) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this FastlyAccount. +func (mg *FastlyAccount) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this FastlyAccount. +func (mg *FastlyAccount) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this FastlyAccount. +func (mg *FastlyAccount) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this FastlyAccount. +func (mg *FastlyAccount) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this FastlyService. +func (mg *FastlyService) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this FastlyService. +func (mg *FastlyService) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this FastlyService. +func (mg *FastlyService) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this FastlyService. +func (mg *FastlyService) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this FastlyService. +func (mg *FastlyService) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this FastlyService. +func (mg *FastlyService) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this FastlyService. +func (mg *FastlyService) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this FastlyService. +func (mg *FastlyService) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this FastlyService. +func (mg *FastlyService) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this FastlyService. +func (mg *FastlyService) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this FastlyService. +func (mg *FastlyService) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this FastlyService. +func (mg *FastlyService) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this GCP. +func (mg *GCP) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this GCP. +func (mg *GCP) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this GCP. +func (mg *GCP) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this GCP. +func (mg *GCP) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this GCP. +func (mg *GCP) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this GCP. +func (mg *GCP) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this GCP. +func (mg *GCP) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this GCP. +func (mg *GCP) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this GCP. +func (mg *GCP) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this GCP. +func (mg *GCP) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this GCP. +func (mg *GCP) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this GCP. +func (mg *GCP) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this GCPSTS. +func (mg *GCPSTS) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this GCPSTS. +func (mg *GCPSTS) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this GCPSTS. +func (mg *GCPSTS) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this GCPSTS. +func (mg *GCPSTS) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this GCPSTS. +func (mg *GCPSTS) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this GCPSTS. +func (mg *GCPSTS) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this GCPSTS. +func (mg *GCPSTS) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this GCPSTS. +func (mg *GCPSTS) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this GCPSTS. +func (mg *GCPSTS) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this GCPSTS. +func (mg *GCPSTS) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this GCPSTS. +func (mg *GCPSTS) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this GCPSTS. +func (mg *GCPSTS) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this OpsgenieServiceObject. +func (mg *OpsgenieServiceObject) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Pagerduty. +func (mg *Pagerduty) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Pagerduty. +func (mg *Pagerduty) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Pagerduty. +func (mg *Pagerduty) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Pagerduty. +func (mg *Pagerduty) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Pagerduty. +func (mg *Pagerduty) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Pagerduty. +func (mg *Pagerduty) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Pagerduty. +func (mg *Pagerduty) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Pagerduty. +func (mg *Pagerduty) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Pagerduty. +func (mg *Pagerduty) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Pagerduty. +func (mg *Pagerduty) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Pagerduty. +func (mg *Pagerduty) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Pagerduty. +func (mg *Pagerduty) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this PagerdutyServiceObject. +func (mg *PagerdutyServiceObject) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this SlackChannel. +func (mg *SlackChannel) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this SlackChannel. +func (mg *SlackChannel) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this SlackChannel. +func (mg *SlackChannel) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this SlackChannel. +func (mg *SlackChannel) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this SlackChannel. +func (mg *SlackChannel) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this SlackChannel. +func (mg *SlackChannel) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this SlackChannel. +func (mg *SlackChannel) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this SlackChannel. +func (mg *SlackChannel) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this SlackChannel. +func (mg *SlackChannel) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this SlackChannel. +func (mg *SlackChannel) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this SlackChannel. +func (mg *SlackChannel) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this SlackChannel. +func (mg *SlackChannel) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/integration/v1alpha1/zz_generated.managedlist.go b/apis/integration/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..7821820 --- /dev/null +++ b/apis/integration/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,161 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this AWSEventBridgeList. +func (l *AWSEventBridgeList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this AWSLambdaARNList. +func (l *AWSLambdaARNList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this AWSList. +func (l *AWSList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this AWSLogCollectionList. +func (l *AWSLogCollectionList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this AWSTagFilterList. +func (l *AWSTagFilterList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this AzureList. +func (l *AzureList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this CloudflareAccountList. +func (l *CloudflareAccountList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ConfluentAccountList. +func (l *ConfluentAccountList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ConfluentResourceList. +func (l *ConfluentResourceList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this FastlyAccountList. +func (l *FastlyAccountList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this FastlyServiceList. +func (l *FastlyServiceList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this GCPList. +func (l *GCPList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this GCPSTSList. +func (l *GCPSTSList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this OpsgenieServiceObjectList. +func (l *OpsgenieServiceObjectList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this PagerdutyList. +func (l *PagerdutyList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this PagerdutyServiceObjectList. +func (l *PagerdutyServiceObjectList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this SlackChannelList. +func (l *SlackChannelList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/integration/v1alpha1/zz_groupversion_info.go b/apis/integration/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..ec2fc24 --- /dev/null +++ b/apis/integration/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=integration.datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "integration.datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/integration/v1alpha1/zz_opsgenieserviceobject_terraformed.go b/apis/integration/v1alpha1/zz_opsgenieserviceobject_terraformed.go new file mode 100755 index 0000000..f98950d --- /dev/null +++ b/apis/integration/v1alpha1/zz_opsgenieserviceobject_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this OpsgenieServiceObject +func (mg *OpsgenieServiceObject) GetTerraformResourceType() string { + return "datadog_integration_opsgenie_service_object" +} + +// GetConnectionDetailsMapping for this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"opsgenie_api_key": "spec.forProvider.opsgenieApiKeySecretRef"} +} + +// GetObservation of this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this OpsgenieServiceObject +func (tr *OpsgenieServiceObject) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this OpsgenieServiceObject using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *OpsgenieServiceObject) LateInitialize(attrs []byte) (bool, error) { + params := &OpsgenieServiceObjectParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *OpsgenieServiceObject) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_opsgenieserviceobject_types.go b/apis/integration/v1alpha1/zz_opsgenieserviceobject_types.go new file mode 100755 index 0000000..709cc65 --- /dev/null +++ b/apis/integration/v1alpha1/zz_opsgenieserviceobject_types.go @@ -0,0 +1,138 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type OpsgenieServiceObjectInitParameters struct { + + // (String) The custom url for a custom region. + // The custom url for a custom region. + CustomURL *string `json:"customUrl,omitempty" tf:"custom_url,omitempty"` + + // (String) The name for the Opsgenie service. + // The name for the Opsgenie service. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The region for the Opsgenie service. Valid values are us, eu, custom. + // The region for the Opsgenie service. Valid values are `us`, `eu`, `custom`. + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + +type OpsgenieServiceObjectObservation struct { + + // (String) The custom url for a custom region. + // The custom url for a custom region. + CustomURL *string `json:"customUrl,omitempty" tf:"custom_url,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name for the Opsgenie service. + // The name for the Opsgenie service. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The region for the Opsgenie service. Valid values are us, eu, custom. + // The region for the Opsgenie service. Valid values are `us`, `eu`, `custom`. + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + +type OpsgenieServiceObjectParameters struct { + + // (String) The custom url for a custom region. + // The custom url for a custom region. + // +kubebuilder:validation:Optional + CustomURL *string `json:"customUrl,omitempty" tf:"custom_url,omitempty"` + + // (String) The name for the Opsgenie service. + // The name for the Opsgenie service. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String, Sensitive) The Opsgenie API key for the Opsgenie service. Note: Since the Datadog API never returns Opsgenie API keys, it is impossible to detect drifts. + // The Opsgenie API key for the Opsgenie service. Note: Since the Datadog API never returns Opsgenie API keys, it is impossible to detect [drifts](https://www.hashicorp.io/docs/commands/taint.html) to have it destroyed and recreated. + // +kubebuilder:validation:Optional + OpsgenieAPIKeySecretRef v1.SecretKeySelector `json:"opsgenieApiKeySecretRef" tf:"-"` + + // (String) The region for the Opsgenie service. Valid values are us, eu, custom. + // The region for the Opsgenie service. Valid values are `us`, `eu`, `custom`. + // +kubebuilder:validation:Optional + Region *string `json:"region,omitempty" tf:"region,omitempty"` +} + +// OpsgenieServiceObjectSpec defines the desired state of OpsgenieServiceObject +type OpsgenieServiceObjectSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider OpsgenieServiceObjectParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider OpsgenieServiceObjectInitParameters `json:"initProvider,omitempty"` +} + +// OpsgenieServiceObjectStatus defines the observed state of OpsgenieServiceObject. +type OpsgenieServiceObjectStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider OpsgenieServiceObjectObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// OpsgenieServiceObject is the Schema for the OpsgenieServiceObjects API. Resource for interacting with Datadog Opsgenie Service API. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type OpsgenieServiceObject struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.opsgenieApiKeySecretRef)",message="spec.forProvider.opsgenieApiKeySecretRef is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.region) || (has(self.initProvider) && has(self.initProvider.region))",message="spec.forProvider.region is a required parameter" + Spec OpsgenieServiceObjectSpec `json:"spec"` + Status OpsgenieServiceObjectStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// OpsgenieServiceObjectList contains a list of OpsgenieServiceObjects +type OpsgenieServiceObjectList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []OpsgenieServiceObject `json:"items"` +} + +// Repository type metadata. +var ( + OpsgenieServiceObject_Kind = "OpsgenieServiceObject" + OpsgenieServiceObject_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: OpsgenieServiceObject_Kind}.String() + OpsgenieServiceObject_KindAPIVersion = OpsgenieServiceObject_Kind + "." + CRDGroupVersion.String() + OpsgenieServiceObject_GroupVersionKind = CRDGroupVersion.WithKind(OpsgenieServiceObject_Kind) +) + +func init() { + SchemeBuilder.Register(&OpsgenieServiceObject{}, &OpsgenieServiceObjectList{}) +} diff --git a/apis/integration/v1alpha1/zz_pagerduty_terraformed.go b/apis/integration/v1alpha1/zz_pagerduty_terraformed.go new file mode 100755 index 0000000..70d80f3 --- /dev/null +++ b/apis/integration/v1alpha1/zz_pagerduty_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Pagerduty +func (mg *Pagerduty) GetTerraformResourceType() string { + return "datadog_integration_pagerduty" +} + +// GetConnectionDetailsMapping for this Pagerduty +func (tr *Pagerduty) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"api_token": "spec.forProvider.apiTokenSecretRef"} +} + +// GetObservation of this Pagerduty +func (tr *Pagerduty) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Pagerduty +func (tr *Pagerduty) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Pagerduty +func (tr *Pagerduty) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Pagerduty +func (tr *Pagerduty) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Pagerduty +func (tr *Pagerduty) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Pagerduty +func (tr *Pagerduty) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Pagerduty +func (tr *Pagerduty) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Pagerduty using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Pagerduty) LateInitialize(attrs []byte) (bool, error) { + params := &PagerdutyParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Pagerduty) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_pagerduty_types.go b/apis/integration/v1alpha1/zz_pagerduty_types.go new file mode 100755 index 0000000..e92e28a --- /dev/null +++ b/apis/integration/v1alpha1/zz_pagerduty_types.go @@ -0,0 +1,123 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type PagerdutyInitParameters struct { + + // (List of String) Array of your schedule URLs. + // Array of your schedule URLs. + Schedules []*string `json:"schedules,omitempty" tf:"schedules,omitempty"` + + // (String) Your PagerDuty account’s personalized subdomain name. + // Your PagerDuty account’s personalized subdomain name. + Subdomain *string `json:"subdomain,omitempty" tf:"subdomain,omitempty"` +} + +type PagerdutyObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (List of String) Array of your schedule URLs. + // Array of your schedule URLs. + Schedules []*string `json:"schedules,omitempty" tf:"schedules,omitempty"` + + // (String) Your PagerDuty account’s personalized subdomain name. + // Your PagerDuty account’s personalized subdomain name. + Subdomain *string `json:"subdomain,omitempty" tf:"subdomain,omitempty"` +} + +type PagerdutyParameters struct { + + // (String, Sensitive) Your PagerDuty API token. + // Your PagerDuty API token. + // +kubebuilder:validation:Optional + APITokenSecretRef *v1.SecretKeySelector `json:"apiTokenSecretRef,omitempty" tf:"-"` + + // (List of String) Array of your schedule URLs. + // Array of your schedule URLs. + // +kubebuilder:validation:Optional + Schedules []*string `json:"schedules,omitempty" tf:"schedules,omitempty"` + + // (String) Your PagerDuty account’s personalized subdomain name. + // Your PagerDuty account’s personalized subdomain name. + // +kubebuilder:validation:Optional + Subdomain *string `json:"subdomain,omitempty" tf:"subdomain,omitempty"` +} + +// PagerdutySpec defines the desired state of Pagerduty +type PagerdutySpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider PagerdutyParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider PagerdutyInitParameters `json:"initProvider,omitempty"` +} + +// PagerdutyStatus defines the observed state of Pagerduty. +type PagerdutyStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider PagerdutyObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Pagerduty is the Schema for the Pagerdutys API. Provides a Datadog - PagerDuty resource. This can be used to create and manage Datadog - PagerDuty integration. See also PagerDuty Integration Guide https://www.pagerduty.com/docs/guides/datadog-integration-guide/. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Pagerduty struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.subdomain) || (has(self.initProvider) && has(self.initProvider.subdomain))",message="spec.forProvider.subdomain is a required parameter" + Spec PagerdutySpec `json:"spec"` + Status PagerdutyStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PagerdutyList contains a list of Pagerdutys +type PagerdutyList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Pagerduty `json:"items"` +} + +// Repository type metadata. +var ( + Pagerduty_Kind = "Pagerduty" + Pagerduty_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Pagerduty_Kind}.String() + Pagerduty_KindAPIVersion = Pagerduty_Kind + "." + CRDGroupVersion.String() + Pagerduty_GroupVersionKind = CRDGroupVersion.WithKind(Pagerduty_Kind) +) + +func init() { + SchemeBuilder.Register(&Pagerduty{}, &PagerdutyList{}) +} diff --git a/apis/integration/v1alpha1/zz_pagerdutyserviceobject_terraformed.go b/apis/integration/v1alpha1/zz_pagerdutyserviceobject_terraformed.go new file mode 100755 index 0000000..09a002e --- /dev/null +++ b/apis/integration/v1alpha1/zz_pagerdutyserviceobject_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this PagerdutyServiceObject +func (mg *PagerdutyServiceObject) GetTerraformResourceType() string { + return "datadog_integration_pagerduty_service_object" +} + +// GetConnectionDetailsMapping for this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"service_key": "spec.forProvider.serviceKeySecretRef"} +} + +// GetObservation of this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this PagerdutyServiceObject +func (tr *PagerdutyServiceObject) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this PagerdutyServiceObject using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *PagerdutyServiceObject) LateInitialize(attrs []byte) (bool, error) { + params := &PagerdutyServiceObjectParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *PagerdutyServiceObject) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_pagerdutyserviceobject_types.go b/apis/integration/v1alpha1/zz_pagerdutyserviceobject_types.go new file mode 100755 index 0000000..663011b --- /dev/null +++ b/apis/integration/v1alpha1/zz_pagerdutyserviceobject_types.go @@ -0,0 +1,111 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type PagerdutyServiceObjectInitParameters struct { + + // (String) Your Service name in PagerDuty. + // Your Service name in PagerDuty. + ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` +} + +type PagerdutyServiceObjectObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Your Service name in PagerDuty. + // Your Service name in PagerDuty. + ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` +} + +type PagerdutyServiceObjectParameters struct { + + // (String, Sensitive) Your Service name associated service key in PagerDuty. + // Your Service name associated service key in PagerDuty. This key may also be referred to as an Integration Key or Routing Key in the Pagerduty Integration [documentation](https://www.pagerduty.io/providers/PagerDuty/pagerduty/latest/docs/resources/service_integration#integration_key) Note: Since the Datadog API never returns service keys, it is impossible to detect [drifts](https://www.hashicorp.io/docs/commands/taint.html) to have it destroyed and recreated. + // +kubebuilder:validation:Optional + ServiceKeySecretRef v1.SecretKeySelector `json:"serviceKeySecretRef" tf:"-"` + + // (String) Your Service name in PagerDuty. + // Your Service name in PagerDuty. + // +kubebuilder:validation:Optional + ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` +} + +// PagerdutyServiceObjectSpec defines the desired state of PagerdutyServiceObject +type PagerdutyServiceObjectSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider PagerdutyServiceObjectParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider PagerdutyServiceObjectInitParameters `json:"initProvider,omitempty"` +} + +// PagerdutyServiceObjectStatus defines the observed state of PagerdutyServiceObject. +type PagerdutyServiceObjectStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider PagerdutyServiceObjectObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// PagerdutyServiceObject is the Schema for the PagerdutyServiceObjects API. Provides access to individual Service Objects of Datadog - PagerDuty integrations. Note that the Datadog - PagerDuty integration must be activated in the Datadog UI in order for this resource to be usable. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type PagerdutyServiceObject struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.serviceKeySecretRef)",message="spec.forProvider.serviceKeySecretRef is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.serviceName) || (has(self.initProvider) && has(self.initProvider.serviceName))",message="spec.forProvider.serviceName is a required parameter" + Spec PagerdutyServiceObjectSpec `json:"spec"` + Status PagerdutyServiceObjectStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PagerdutyServiceObjectList contains a list of PagerdutyServiceObjects +type PagerdutyServiceObjectList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []PagerdutyServiceObject `json:"items"` +} + +// Repository type metadata. +var ( + PagerdutyServiceObject_Kind = "PagerdutyServiceObject" + PagerdutyServiceObject_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: PagerdutyServiceObject_Kind}.String() + PagerdutyServiceObject_KindAPIVersion = PagerdutyServiceObject_Kind + "." + CRDGroupVersion.String() + PagerdutyServiceObject_GroupVersionKind = CRDGroupVersion.WithKind(PagerdutyServiceObject_Kind) +) + +func init() { + SchemeBuilder.Register(&PagerdutyServiceObject{}, &PagerdutyServiceObjectList{}) +} diff --git a/apis/integration/v1alpha1/zz_slackchannel_terraformed.go b/apis/integration/v1alpha1/zz_slackchannel_terraformed.go new file mode 100755 index 0000000..d7657cc --- /dev/null +++ b/apis/integration/v1alpha1/zz_slackchannel_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this SlackChannel +func (mg *SlackChannel) GetTerraformResourceType() string { + return "datadog_integration_slack_channel" +} + +// GetConnectionDetailsMapping for this SlackChannel +func (tr *SlackChannel) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this SlackChannel +func (tr *SlackChannel) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this SlackChannel +func (tr *SlackChannel) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this SlackChannel +func (tr *SlackChannel) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this SlackChannel +func (tr *SlackChannel) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this SlackChannel +func (tr *SlackChannel) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this SlackChannel +func (tr *SlackChannel) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this SlackChannel +func (tr *SlackChannel) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this SlackChannel using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *SlackChannel) LateInitialize(attrs []byte) (bool, error) { + params := &SlackChannelParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *SlackChannel) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/integration/v1alpha1/zz_slackchannel_types.go b/apis/integration/v1alpha1/zz_slackchannel_types.go new file mode 100755 index 0000000..b122e91 --- /dev/null +++ b/apis/integration/v1alpha1/zz_slackchannel_types.go @@ -0,0 +1,194 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DisplayInitParameters struct { + + // (Boolean) Show the main body of the alert event. Defaults to true. + // Show the main body of the alert event. Defaults to `true`. + Message *bool `json:"message,omitempty" tf:"message,omitempty"` + + // handles in the alert event. Defaults to true. + // Show the list of @-handles in the alert event. Defaults to `true`. + Notified *bool `json:"notified,omitempty" tf:"notified,omitempty"` + + // (Boolean) Show the alert event's snapshot image. Defaults to true. + // Show the alert event's snapshot image. Defaults to `true`. + Snapshot *bool `json:"snapshot,omitempty" tf:"snapshot,omitempty"` + + // (Boolean) Show the scopes on which the monitor alerted. Defaults to true. + // Show the scopes on which the monitor alerted. Defaults to `true`. + Tags *bool `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type DisplayObservation struct { + + // (Boolean) Show the main body of the alert event. Defaults to true. + // Show the main body of the alert event. Defaults to `true`. + Message *bool `json:"message,omitempty" tf:"message,omitempty"` + + // handles in the alert event. Defaults to true. + // Show the list of @-handles in the alert event. Defaults to `true`. + Notified *bool `json:"notified,omitempty" tf:"notified,omitempty"` + + // (Boolean) Show the alert event's snapshot image. Defaults to true. + // Show the alert event's snapshot image. Defaults to `true`. + Snapshot *bool `json:"snapshot,omitempty" tf:"snapshot,omitempty"` + + // (Boolean) Show the scopes on which the monitor alerted. Defaults to true. + // Show the scopes on which the monitor alerted. Defaults to `true`. + Tags *bool `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type DisplayParameters struct { + + // (Boolean) Show the main body of the alert event. Defaults to true. + // Show the main body of the alert event. Defaults to `true`. + // +kubebuilder:validation:Optional + Message *bool `json:"message,omitempty" tf:"message,omitempty"` + + // handles in the alert event. Defaults to true. + // Show the list of @-handles in the alert event. Defaults to `true`. + // +kubebuilder:validation:Optional + Notified *bool `json:"notified,omitempty" tf:"notified,omitempty"` + + // (Boolean) Show the alert event's snapshot image. Defaults to true. + // Show the alert event's snapshot image. Defaults to `true`. + // +kubebuilder:validation:Optional + Snapshot *bool `json:"snapshot,omitempty" tf:"snapshot,omitempty"` + + // (Boolean) Show the scopes on which the monitor alerted. Defaults to true. + // Show the scopes on which the monitor alerted. Defaults to `true`. + // +kubebuilder:validation:Optional + Tags *bool `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type SlackChannelInitParameters struct { + + // (String) Slack account name. + // Slack account name. + AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"` + + // (String) Slack channel name. + // Slack channel name. + ChannelName *string `json:"channelName,omitempty" tf:"channel_name,omitempty"` + + // (Block List, Min: 1, Max: 1) Configuration options for what is shown in an alert event message. (see below for nested schema) + // Configuration options for what is shown in an alert event message. + Display []DisplayInitParameters `json:"display,omitempty" tf:"display,omitempty"` +} + +type SlackChannelObservation struct { + + // (String) Slack account name. + // Slack account name. + AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"` + + // (String) Slack channel name. + // Slack channel name. + ChannelName *string `json:"channelName,omitempty" tf:"channel_name,omitempty"` + + // (Block List, Min: 1, Max: 1) Configuration options for what is shown in an alert event message. (see below for nested schema) + // Configuration options for what is shown in an alert event message. + Display []DisplayObservation `json:"display,omitempty" tf:"display,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type SlackChannelParameters struct { + + // (String) Slack account name. + // Slack account name. + // +kubebuilder:validation:Optional + AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"` + + // (String) Slack channel name. + // Slack channel name. + // +kubebuilder:validation:Optional + ChannelName *string `json:"channelName,omitempty" tf:"channel_name,omitempty"` + + // (Block List, Min: 1, Max: 1) Configuration options for what is shown in an alert event message. (see below for nested schema) + // Configuration options for what is shown in an alert event message. + // +kubebuilder:validation:Optional + Display []DisplayParameters `json:"display,omitempty" tf:"display,omitempty"` +} + +// SlackChannelSpec defines the desired state of SlackChannel +type SlackChannelSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider SlackChannelParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider SlackChannelInitParameters `json:"initProvider,omitempty"` +} + +// SlackChannelStatus defines the observed state of SlackChannel. +type SlackChannelStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider SlackChannelObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// SlackChannel is the Schema for the SlackChannels API. Resource for interacting with the Datadog Slack channel API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type SlackChannel struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.accountName) || (has(self.initProvider) && has(self.initProvider.accountName))",message="spec.forProvider.accountName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.channelName) || (has(self.initProvider) && has(self.initProvider.channelName))",message="spec.forProvider.channelName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.display) || (has(self.initProvider) && has(self.initProvider.display))",message="spec.forProvider.display is a required parameter" + Spec SlackChannelSpec `json:"spec"` + Status SlackChannelStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// SlackChannelList contains a list of SlackChannels +type SlackChannelList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []SlackChannel `json:"items"` +} + +// Repository type metadata. +var ( + SlackChannel_Kind = "SlackChannel" + SlackChannel_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: SlackChannel_Kind}.String() + SlackChannel_KindAPIVersion = SlackChannel_Kind + "." + CRDGroupVersion.String() + SlackChannel_GroupVersionKind = CRDGroupVersion.WithKind(SlackChannel_Kind) +) + +func init() { + SchemeBuilder.Register(&SlackChannel{}, &SlackChannelList{}) +} diff --git a/apis/logs/v1alpha1/zz_archive_terraformed.go b/apis/logs/v1alpha1/zz_archive_terraformed.go new file mode 100755 index 0000000..aa27e88 --- /dev/null +++ b/apis/logs/v1alpha1/zz_archive_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Archive +func (mg *Archive) GetTerraformResourceType() string { + return "datadog_logs_archive" +} + +// GetConnectionDetailsMapping for this Archive +func (tr *Archive) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Archive +func (tr *Archive) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Archive +func (tr *Archive) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Archive +func (tr *Archive) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Archive +func (tr *Archive) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Archive +func (tr *Archive) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Archive +func (tr *Archive) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Archive +func (tr *Archive) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Archive using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Archive) LateInitialize(attrs []byte) (bool, error) { + params := &ArchiveParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Archive) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_archive_types.go b/apis/logs/v1alpha1/zz_archive_types.go new file mode 100755 index 0000000..29601d6 --- /dev/null +++ b/apis/logs/v1alpha1/zz_archive_types.go @@ -0,0 +1,393 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ArchiveInitParameters struct { + + // (Block List, Max: 1) Definition of an azure archive. (see below for nested schema) + // Definition of an azure archive. + AzureArchive []AzureArchiveInitParameters `json:"azureArchive,omitempty" tf:"azure_archive,omitempty"` + + // (Block List, Max: 1) Definition of a GCS archive. (see below for nested schema) + // Definition of a GCS archive. + GcsArchive []GcsArchiveInitParameters `json:"gcsArchive,omitempty" tf:"gcs_archive,omitempty"` + + // (Boolean) To store the tags in the archive, set the value true. If it is set to false, the tags will be dropped when the logs are sent to the archive. Defaults to false. + // To store the tags in the archive, set the value `true`. If it is set to `false`, the tags will be dropped when the logs are sent to the archive. Defaults to `false`. + IncludeTags *bool `json:"includeTags,omitempty" tf:"include_tags,omitempty"` + + // (String) Your archive name. + // Your archive name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The archive query/filter. Logs matching this query are included in the archive. + // The archive query/filter. Logs matching this query are included in the archive. + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) To limit the rehydration scan size for the archive, set a value in GB. + // To limit the rehydration scan size for the archive, set a value in GB. + RehydrationMaxScanSizeInGb *float64 `json:"rehydrationMaxScanSizeInGb,omitempty" tf:"rehydration_max_scan_size_in_gb,omitempty"` + + // (List of String) An array of tags to add to rehydrated logs from an archive. + // An array of tags to add to rehydrated logs from an archive. + RehydrationTags []*string `json:"rehydrationTags,omitempty" tf:"rehydration_tags,omitempty"` + + // (Block List, Max: 1) Definition of an s3 archive. (see below for nested schema) + // Definition of an s3 archive. + S3Archive []S3ArchiveInitParameters `json:"s3Archive,omitempty" tf:"s3_archive,omitempty"` +} + +type ArchiveObservation struct { + + // (Block List, Max: 1) Definition of an azure archive. (see below for nested schema) + // Definition of an azure archive. + AzureArchive []AzureArchiveObservation `json:"azureArchive,omitempty" tf:"azure_archive,omitempty"` + + // (Block List, Max: 1) Definition of a GCS archive. (see below for nested schema) + // Definition of a GCS archive. + GcsArchive []GcsArchiveObservation `json:"gcsArchive,omitempty" tf:"gcs_archive,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) To store the tags in the archive, set the value true. If it is set to false, the tags will be dropped when the logs are sent to the archive. Defaults to false. + // To store the tags in the archive, set the value `true`. If it is set to `false`, the tags will be dropped when the logs are sent to the archive. Defaults to `false`. + IncludeTags *bool `json:"includeTags,omitempty" tf:"include_tags,omitempty"` + + // (String) Your archive name. + // Your archive name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The archive query/filter. Logs matching this query are included in the archive. + // The archive query/filter. Logs matching this query are included in the archive. + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) To limit the rehydration scan size for the archive, set a value in GB. + // To limit the rehydration scan size for the archive, set a value in GB. + RehydrationMaxScanSizeInGb *float64 `json:"rehydrationMaxScanSizeInGb,omitempty" tf:"rehydration_max_scan_size_in_gb,omitempty"` + + // (List of String) An array of tags to add to rehydrated logs from an archive. + // An array of tags to add to rehydrated logs from an archive. + RehydrationTags []*string `json:"rehydrationTags,omitempty" tf:"rehydration_tags,omitempty"` + + // (Block List, Max: 1) Definition of an s3 archive. (see below for nested schema) + // Definition of an s3 archive. + S3Archive []S3ArchiveObservation `json:"s3Archive,omitempty" tf:"s3_archive,omitempty"` +} + +type ArchiveParameters struct { + + // (Block List, Max: 1) Definition of an azure archive. (see below for nested schema) + // Definition of an azure archive. + // +kubebuilder:validation:Optional + AzureArchive []AzureArchiveParameters `json:"azureArchive,omitempty" tf:"azure_archive,omitempty"` + + // (Block List, Max: 1) Definition of a GCS archive. (see below for nested schema) + // Definition of a GCS archive. + // +kubebuilder:validation:Optional + GcsArchive []GcsArchiveParameters `json:"gcsArchive,omitempty" tf:"gcs_archive,omitempty"` + + // (Boolean) To store the tags in the archive, set the value true. If it is set to false, the tags will be dropped when the logs are sent to the archive. Defaults to false. + // To store the tags in the archive, set the value `true`. If it is set to `false`, the tags will be dropped when the logs are sent to the archive. Defaults to `false`. + // +kubebuilder:validation:Optional + IncludeTags *bool `json:"includeTags,omitempty" tf:"include_tags,omitempty"` + + // (String) Your archive name. + // Your archive name. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The archive query/filter. Logs matching this query are included in the archive. + // The archive query/filter. Logs matching this query are included in the archive. + // +kubebuilder:validation:Optional + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) To limit the rehydration scan size for the archive, set a value in GB. + // To limit the rehydration scan size for the archive, set a value in GB. + // +kubebuilder:validation:Optional + RehydrationMaxScanSizeInGb *float64 `json:"rehydrationMaxScanSizeInGb,omitempty" tf:"rehydration_max_scan_size_in_gb,omitempty"` + + // (List of String) An array of tags to add to rehydrated logs from an archive. + // An array of tags to add to rehydrated logs from an archive. + // +kubebuilder:validation:Optional + RehydrationTags []*string `json:"rehydrationTags,omitempty" tf:"rehydration_tags,omitempty"` + + // (Block List, Max: 1) Definition of an s3 archive. (see below for nested schema) + // Definition of an s3 archive. + // +kubebuilder:validation:Optional + S3Archive []S3ArchiveParameters `json:"s3Archive,omitempty" tf:"s3_archive,omitempty"` +} + +type AzureArchiveInitParameters struct { + + // (String) Your client id. + // Your client id. + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // (String) The container where the archive is stored. + // The container where the archive is stored. + Container *string `json:"container,omitempty" tf:"container,omitempty"` + + // (String) The path where the archive is stored. + // The path where the archive is stored. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) The associated storage account. + // The associated storage account. + StorageAccount *string `json:"storageAccount,omitempty" tf:"storage_account,omitempty"` + + // (String) Your tenant id. + // Your tenant id. + TenantID *string `json:"tenantId,omitempty" tf:"tenant_id,omitempty"` +} + +type AzureArchiveObservation struct { + + // (String) Your client id. + // Your client id. + ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + + // (String) The container where the archive is stored. + // The container where the archive is stored. + Container *string `json:"container,omitempty" tf:"container,omitempty"` + + // (String) The path where the archive is stored. + // The path where the archive is stored. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) The associated storage account. + // The associated storage account. + StorageAccount *string `json:"storageAccount,omitempty" tf:"storage_account,omitempty"` + + // (String) Your tenant id. + // Your tenant id. + TenantID *string `json:"tenantId,omitempty" tf:"tenant_id,omitempty"` +} + +type AzureArchiveParameters struct { + + // (String) Your client id. + // Your client id. + // +kubebuilder:validation:Optional + ClientID *string `json:"clientId" tf:"client_id,omitempty"` + + // (String) The container where the archive is stored. + // The container where the archive is stored. + // +kubebuilder:validation:Optional + Container *string `json:"container" tf:"container,omitempty"` + + // (String) The path where the archive is stored. + // The path where the archive is stored. + // +kubebuilder:validation:Optional + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) The associated storage account. + // The associated storage account. + // +kubebuilder:validation:Optional + StorageAccount *string `json:"storageAccount" tf:"storage_account,omitempty"` + + // (String) Your tenant id. + // Your tenant id. + // +kubebuilder:validation:Optional + TenantID *string `json:"tenantId" tf:"tenant_id,omitempty"` +} + +type GcsArchiveInitParameters struct { + + // (String) Name of your GCS bucket. + // Name of your GCS bucket. + Bucket *string `json:"bucket,omitempty" tf:"bucket,omitempty"` + + // (String) Your client email. + // Your client email. + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (String) The path where the archive is stored. + // Path where the archive is stored. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Your project id. + // Your project id. + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type GcsArchiveObservation struct { + + // (String) Name of your GCS bucket. + // Name of your GCS bucket. + Bucket *string `json:"bucket,omitempty" tf:"bucket,omitempty"` + + // (String) Your client email. + // Your client email. + ClientEmail *string `json:"clientEmail,omitempty" tf:"client_email,omitempty"` + + // (String) The path where the archive is stored. + // Path where the archive is stored. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Your project id. + // Your project id. + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type GcsArchiveParameters struct { + + // (String) Name of your GCS bucket. + // Name of your GCS bucket. + // +kubebuilder:validation:Optional + Bucket *string `json:"bucket" tf:"bucket,omitempty"` + + // (String) Your client email. + // Your client email. + // +kubebuilder:validation:Optional + ClientEmail *string `json:"clientEmail" tf:"client_email,omitempty"` + + // (String) The path where the archive is stored. + // Path where the archive is stored. + // +kubebuilder:validation:Optional + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Your project id. + // Your project id. + // +kubebuilder:validation:Optional + ProjectID *string `json:"projectId" tf:"project_id,omitempty"` +} + +type S3ArchiveInitParameters struct { + + // (String) Your AWS account id. + // Your AWS account id. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) Name of your GCS bucket. + // Name of your s3 bucket. + Bucket *string `json:"bucket,omitempty" tf:"bucket,omitempty"` + + // (String) The path where the archive is stored. + // Path where the archive is stored. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Your AWS role name + // Your AWS role name + RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` +} + +type S3ArchiveObservation struct { + + // (String) Your AWS account id. + // Your AWS account id. + AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + + // (String) Name of your GCS bucket. + // Name of your s3 bucket. + Bucket *string `json:"bucket,omitempty" tf:"bucket,omitempty"` + + // (String) The path where the archive is stored. + // Path where the archive is stored. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Your AWS role name + // Your AWS role name + RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` +} + +type S3ArchiveParameters struct { + + // (String) Your AWS account id. + // Your AWS account id. + // +kubebuilder:validation:Optional + AccountID *string `json:"accountId" tf:"account_id,omitempty"` + + // (String) Name of your GCS bucket. + // Name of your s3 bucket. + // +kubebuilder:validation:Optional + Bucket *string `json:"bucket" tf:"bucket,omitempty"` + + // (String) The path where the archive is stored. + // Path where the archive is stored. + // +kubebuilder:validation:Optional + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Your AWS role name + // Your AWS role name + // +kubebuilder:validation:Optional + RoleName *string `json:"roleName" tf:"role_name,omitempty"` +} + +// ArchiveSpec defines the desired state of Archive +type ArchiveSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ArchiveParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ArchiveInitParameters `json:"initProvider,omitempty"` +} + +// ArchiveStatus defines the observed state of Archive. +type ArchiveStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ArchiveObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Archive is the Schema for the Archives API. Provides a Datadog Logs Archive API resource, which is used to create and manage Datadog logs archives. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Archive struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.query) || (has(self.initProvider) && has(self.initProvider.query))",message="spec.forProvider.query is a required parameter" + Spec ArchiveSpec `json:"spec"` + Status ArchiveStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ArchiveList contains a list of Archives +type ArchiveList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Archive `json:"items"` +} + +// Repository type metadata. +var ( + Archive_Kind = "Archive" + Archive_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Archive_Kind}.String() + Archive_KindAPIVersion = Archive_Kind + "." + CRDGroupVersion.String() + Archive_GroupVersionKind = CRDGroupVersion.WithKind(Archive_Kind) +) + +func init() { + SchemeBuilder.Register(&Archive{}, &ArchiveList{}) +} diff --git a/apis/logs/v1alpha1/zz_archiveorder_terraformed.go b/apis/logs/v1alpha1/zz_archiveorder_terraformed.go new file mode 100755 index 0000000..4cff054 --- /dev/null +++ b/apis/logs/v1alpha1/zz_archiveorder_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ArchiveOrder +func (mg *ArchiveOrder) GetTerraformResourceType() string { + return "datadog_logs_archive_order" +} + +// GetConnectionDetailsMapping for this ArchiveOrder +func (tr *ArchiveOrder) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ArchiveOrder +func (tr *ArchiveOrder) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ArchiveOrder +func (tr *ArchiveOrder) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ArchiveOrder +func (tr *ArchiveOrder) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ArchiveOrder +func (tr *ArchiveOrder) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ArchiveOrder +func (tr *ArchiveOrder) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ArchiveOrder +func (tr *ArchiveOrder) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ArchiveOrder +func (tr *ArchiveOrder) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ArchiveOrder using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ArchiveOrder) LateInitialize(attrs []byte) (bool, error) { + params := &ArchiveOrderParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ArchiveOrder) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_archiveorder_types.go b/apis/logs/v1alpha1/zz_archiveorder_types.go new file mode 100755 index 0000000..52a075d --- /dev/null +++ b/apis/logs/v1alpha1/zz_archiveorder_types.go @@ -0,0 +1,104 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ArchiveOrderInitParameters struct { + + // (List of String) The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If archive_ids is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order. + // The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If `archive_ids` is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order. + ArchiveIds []*string `json:"archiveIds,omitempty" tf:"archive_ids,omitempty"` +} + +type ArchiveOrderObservation struct { + + // (List of String) The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If archive_ids is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order. + // The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If `archive_ids` is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order. + ArchiveIds []*string `json:"archiveIds,omitempty" tf:"archive_ids,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type ArchiveOrderParameters struct { + + // (List of String) The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If archive_ids is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order. + // The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If `archive_ids` is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order. + // +kubebuilder:validation:Optional + ArchiveIds []*string `json:"archiveIds,omitempty" tf:"archive_ids,omitempty"` +} + +// ArchiveOrderSpec defines the desired state of ArchiveOrder +type ArchiveOrderSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ArchiveOrderParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ArchiveOrderInitParameters `json:"initProvider,omitempty"` +} + +// ArchiveOrderStatus defines the observed state of ArchiveOrder. +type ArchiveOrderStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ArchiveOrderObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ArchiveOrder is the Schema for the ArchiveOrders API. Provides a Datadog Logs Archive API https://docs.datadoghq.com/api/v2/logs-archives/ resource, which is used to manage Datadog log archives order. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ArchiveOrder struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ArchiveOrderSpec `json:"spec"` + Status ArchiveOrderStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ArchiveOrderList contains a list of ArchiveOrders +type ArchiveOrderList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ArchiveOrder `json:"items"` +} + +// Repository type metadata. +var ( + ArchiveOrder_Kind = "ArchiveOrder" + ArchiveOrder_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ArchiveOrder_Kind}.String() + ArchiveOrder_KindAPIVersion = ArchiveOrder_Kind + "." + CRDGroupVersion.String() + ArchiveOrder_GroupVersionKind = CRDGroupVersion.WithKind(ArchiveOrder_Kind) +) + +func init() { + SchemeBuilder.Register(&ArchiveOrder{}, &ArchiveOrderList{}) +} diff --git a/apis/logs/v1alpha1/zz_custompipeline_terraformed.go b/apis/logs/v1alpha1/zz_custompipeline_terraformed.go new file mode 100755 index 0000000..4bd5aad --- /dev/null +++ b/apis/logs/v1alpha1/zz_custompipeline_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this CustomPipeline +func (mg *CustomPipeline) GetTerraformResourceType() string { + return "datadog_logs_custom_pipeline" +} + +// GetConnectionDetailsMapping for this CustomPipeline +func (tr *CustomPipeline) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this CustomPipeline +func (tr *CustomPipeline) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this CustomPipeline +func (tr *CustomPipeline) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this CustomPipeline +func (tr *CustomPipeline) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this CustomPipeline +func (tr *CustomPipeline) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this CustomPipeline +func (tr *CustomPipeline) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this CustomPipeline +func (tr *CustomPipeline) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this CustomPipeline +func (tr *CustomPipeline) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this CustomPipeline using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *CustomPipeline) LateInitialize(attrs []byte) (bool, error) { + params := &CustomPipelineParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *CustomPipeline) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_custompipeline_types.go b/apis/logs/v1alpha1/zz_custompipeline_types.go new file mode 100755 index 0000000..8a4fe5c --- /dev/null +++ b/apis/logs/v1alpha1/zz_custompipeline_types.go @@ -0,0 +1,2848 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ArithmeticProcessorInitParameters struct { + + // (String) Arithmetic operation between one or more log attributes. + // Arithmetic operation between one or more log attributes. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (Boolean) + // Boolean value to enable your pipeline. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // Your pipeline name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the arithmetic operation. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ArithmeticProcessorObservation struct { + + // (String) Arithmetic operation between one or more log attributes. + // Arithmetic operation between one or more log attributes. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (Boolean) + // Boolean value to enable your pipeline. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // Your pipeline name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the arithmetic operation. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ArithmeticProcessorParameters struct { + + // (String) Arithmetic operation between one or more log attributes. + // Arithmetic operation between one or more log attributes. + // +kubebuilder:validation:Optional + Expression *string `json:"expression" tf:"expression,omitempty"` + + // (Boolean) + // Boolean value to enable your pipeline. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // +kubebuilder:validation:Optional + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // Your pipeline name. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the arithmetic operation. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type AttributeRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Override the target element if already set. + // Override the target element if already set. + OverrideOnConflict *bool `json:"overrideOnConflict,omitempty" tf:"override_on_conflict,omitempty"` + + // (Boolean) Remove or preserve the remapped source element. + // Remove or preserve the remapped source element. + PreserveSource *bool `json:"preserveSource,omitempty" tf:"preserve_source,omitempty"` + + // (String) Defines where the sources are from (log attribute or tag). + // Defines where the sources are from (log `attribute` or `tag`). + SourceType *string `json:"sourceType,omitempty" tf:"source_type,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes or tags. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Final attribute or tag name to remap the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) If the target_type of the remapper is attribute, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. string, integer, or double are the possible types. If the target_type is tag, this parameter may not be specified. + // If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified. + TargetFormat *string `json:"targetFormat,omitempty" tf:"target_format,omitempty"` + + // (String) Defines if the target is a log attribute or tag. + // Defines if the target is a log `attribute` or `tag`. + TargetType *string `json:"targetType,omitempty" tf:"target_type,omitempty"` +} + +type AttributeRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Override the target element if already set. + // Override the target element if already set. + OverrideOnConflict *bool `json:"overrideOnConflict,omitempty" tf:"override_on_conflict,omitempty"` + + // (Boolean) Remove or preserve the remapped source element. + // Remove or preserve the remapped source element. + PreserveSource *bool `json:"preserveSource,omitempty" tf:"preserve_source,omitempty"` + + // (String) Defines where the sources are from (log attribute or tag). + // Defines where the sources are from (log `attribute` or `tag`). + SourceType *string `json:"sourceType,omitempty" tf:"source_type,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes or tags. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Final attribute or tag name to remap the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) If the target_type of the remapper is attribute, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. string, integer, or double are the possible types. If the target_type is tag, this parameter may not be specified. + // If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified. + TargetFormat *string `json:"targetFormat,omitempty" tf:"target_format,omitempty"` + + // (String) Defines if the target is a log attribute or tag. + // Defines if the target is a log `attribute` or `tag`. + TargetType *string `json:"targetType,omitempty" tf:"target_type,omitempty"` +} + +type AttributeRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Override the target element if already set. + // Override the target element if already set. + // +kubebuilder:validation:Optional + OverrideOnConflict *bool `json:"overrideOnConflict,omitempty" tf:"override_on_conflict,omitempty"` + + // (Boolean) Remove or preserve the remapped source element. + // Remove or preserve the remapped source element. + // +kubebuilder:validation:Optional + PreserveSource *bool `json:"preserveSource,omitempty" tf:"preserve_source,omitempty"` + + // (String) Defines where the sources are from (log attribute or tag). + // Defines where the sources are from (log `attribute` or `tag`). + // +kubebuilder:validation:Optional + SourceType *string `json:"sourceType" tf:"source_type,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes or tags. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Final attribute or tag name to remap the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` + + // (String) If the target_type of the remapper is attribute, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. string, integer, or double are the possible types. If the target_type is tag, this parameter may not be specified. + // If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified. + // +kubebuilder:validation:Optional + TargetFormat *string `json:"targetFormat,omitempty" tf:"target_format,omitempty"` + + // (String) Defines if the target is a log attribute or tag. + // Defines if the target is a log `attribute` or `tag`. + // +kubebuilder:validation:Optional + TargetType *string `json:"targetType" tf:"target_type,omitempty"` +} + +type CategoryFilterInitParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type CategoryFilterObservation struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type CategoryFilterParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type CategoryInitParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []CategoryFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type CategoryObservation struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []CategoryFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type CategoryParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Filter []CategoryFilterParameters `json:"filter" tf:"filter,omitempty"` + + // (String) + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` +} + +type CategoryProcessorCategoryFilterInitParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type CategoryProcessorCategoryFilterObservation struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type CategoryProcessorCategoryFilterParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type CategoryProcessorCategoryInitParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []CategoryProcessorCategoryFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type CategoryProcessorCategoryObservation struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []CategoryProcessorCategoryFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type CategoryProcessorCategoryParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Filter []CategoryProcessorCategoryFilterParameters `json:"filter" tf:"filter,omitempty"` + + // (String) + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` +} + +type CategoryProcessorInitParameters struct { + + // (Block List, Min: 1) List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. (see below for nested schema) + // List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. + Category []CategoryInitParameters `json:"category,omitempty" tf:"category,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the category + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the target attribute whose value is defined by the matching category. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type CategoryProcessorObservation struct { + + // (Block List, Min: 1) List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. (see below for nested schema) + // List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. + Category []CategoryObservation `json:"category,omitempty" tf:"category,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the category + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the target attribute whose value is defined by the matching category. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type CategoryProcessorParameters struct { + + // (Block List, Min: 1) List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. (see below for nested schema) + // List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. + // +kubebuilder:validation:Optional + Category []CategoryParameters `json:"category" tf:"category,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the category + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the target attribute whose value is defined by the matching category. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type CustomPipelineInitParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Boolean) + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) (see below for nested schema) + Processor []ProcessorInitParameters `json:"processor,omitempty" tf:"processor,omitempty"` +} + +type CustomPipelineObservation struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) (see below for nested schema) + Processor []ProcessorObservation `json:"processor,omitempty" tf:"processor,omitempty"` +} + +type CustomPipelineParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Filter []FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Boolean) + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) (see below for nested schema) + // +kubebuilder:validation:Optional + Processor []ProcessorParameters `json:"processor,omitempty" tf:"processor,omitempty"` +} + +type DateRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type DateRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type DateRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type FilterInitParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterObservation struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type GeoIPParserInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type GeoIPParserObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type GeoIPParserParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type GrokInitParameters struct { + + // (String) Match rules for your grok parser. + // Match rules for your grok parser. + MatchRules *string `json:"matchRules,omitempty" tf:"match_rules,omitempty"` + + // (String) Support rules for your grok parser. + // Support rules for your grok parser. + SupportRules *string `json:"supportRules,omitempty" tf:"support_rules,omitempty"` +} + +type GrokObservation struct { + + // (String) Match rules for your grok parser. + // Match rules for your grok parser. + MatchRules *string `json:"matchRules,omitempty" tf:"match_rules,omitempty"` + + // (String) Support rules for your grok parser. + // Support rules for your grok parser. + SupportRules *string `json:"supportRules,omitempty" tf:"support_rules,omitempty"` +} + +type GrokParameters struct { + + // (String) Match rules for your grok parser. + // Match rules for your grok parser. + // +kubebuilder:validation:Optional + MatchRules *string `json:"matchRules" tf:"match_rules,omitempty"` + + // (String) Support rules for your grok parser. + // Support rules for your grok parser. + // +kubebuilder:validation:Optional + SupportRules *string `json:"supportRules" tf:"support_rules,omitempty"` +} + +type GrokParserGrokInitParameters struct { + + // (String) Match rules for your grok parser. + // Match rules for your grok parser. + MatchRules *string `json:"matchRules,omitempty" tf:"match_rules,omitempty"` + + // (String) Support rules for your grok parser. + // Support rules for your grok parser. + SupportRules *string `json:"supportRules,omitempty" tf:"support_rules,omitempty"` +} + +type GrokParserGrokObservation struct { + + // (String) Match rules for your grok parser. + // Match rules for your grok parser. + MatchRules *string `json:"matchRules,omitempty" tf:"match_rules,omitempty"` + + // (String) Support rules for your grok parser. + // Support rules for your grok parser. + SupportRules *string `json:"supportRules,omitempty" tf:"support_rules,omitempty"` +} + +type GrokParserGrokParameters struct { + + // (String) Match rules for your grok parser. + // Match rules for your grok parser. + // +kubebuilder:validation:Optional + MatchRules *string `json:"matchRules" tf:"match_rules,omitempty"` + + // (String) Support rules for your grok parser. + // Support rules for your grok parser. + // +kubebuilder:validation:Optional + SupportRules *string `json:"supportRules" tf:"support_rules,omitempty"` +} + +type GrokParserInitParameters struct { + + // (Block List, Min: 1, Max: 1) (see below for nested schema) + Grok []GrokInitParameters `json:"grok,omitempty" tf:"grok,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + Samples []*string `json:"samples,omitempty" tf:"samples,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the log attribute to parse. + Source *string `json:"source,omitempty" tf:"source,omitempty"` +} + +type GrokParserObservation struct { + + // (Block List, Min: 1, Max: 1) (see below for nested schema) + Grok []GrokObservation `json:"grok,omitempty" tf:"grok,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + Samples []*string `json:"samples,omitempty" tf:"samples,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the log attribute to parse. + Source *string `json:"source,omitempty" tf:"source,omitempty"` +} + +type GrokParserParameters struct { + + // (Block List, Min: 1, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Grok []GrokParameters `json:"grok" tf:"grok,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // +kubebuilder:validation:Optional + Samples []*string `json:"samples,omitempty" tf:"samples,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the log attribute to parse. + // +kubebuilder:validation:Optional + Source *string `json:"source" tf:"source,omitempty"` +} + +type LookupProcessorInitParameters struct { + + // (String) Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + DefaultLookup *string `json:"defaultLookup,omitempty" tf:"default_lookup,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (List of String) List of entries of the lookup table using key,value format. + // List of entries of the lookup table using `key,value` format. + LookupTable []*string `json:"lookupTable,omitempty" tf:"lookup_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type LookupProcessorObservation struct { + + // (String) Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + DefaultLookup *string `json:"defaultLookup,omitempty" tf:"default_lookup,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (List of String) List of entries of the lookup table using key,value format. + // List of entries of the lookup table using `key,value` format. + LookupTable []*string `json:"lookupTable,omitempty" tf:"lookup_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type LookupProcessorParameters struct { + + // (String) Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // +kubebuilder:validation:Optional + DefaultLookup *string `json:"defaultLookup,omitempty" tf:"default_lookup,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (List of String) List of entries of the lookup table using key,value format. + // List of entries of the lookup table using `key,value` format. + // +kubebuilder:validation:Optional + LookupTable []*string `json:"lookupTable" tf:"lookup_table,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + // +kubebuilder:validation:Optional + Source *string `json:"source" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type MessageRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type MessageRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type MessageRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type PipelineFilterInitParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type PipelineFilterObservation struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type PipelineFilterParameters struct { + + // (String) Filter criteria of the category. + // Filter criteria of the category. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type PipelineInitParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []PipelineFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Boolean) + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) (see below for nested schema) + Processor []PipelineProcessorInitParameters `json:"processor,omitempty" tf:"processor,omitempty"` +} + +type PipelineObservation struct { + + // (Block List, Min: 1) (see below for nested schema) + Filter []PipelineFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Boolean) + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) (see below for nested schema) + Processor []PipelineProcessorObservation `json:"processor,omitempty" tf:"processor,omitempty"` +} + +type PipelineParameters struct { + + // (Block List, Min: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Filter []PipelineFilterParameters `json:"filter" tf:"filter,omitempty"` + + // (Boolean) + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (Block List) (see below for nested schema) + // +kubebuilder:validation:Optional + Processor []PipelineProcessorParameters `json:"processor,omitempty" tf:"processor,omitempty"` +} + +type PipelineProcessorInitParameters struct { + + // (Block List, Max: 1) Arithmetic Processor. More information can be found in the official docs (see below for nested schema) + // Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor) + ArithmeticProcessor []ProcessorArithmeticProcessorInitParameters `json:"arithmeticProcessor,omitempty" tf:"arithmetic_processor,omitempty"` + + // (Block List, Max: 1) Attribute Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper) + AttributeRemapper []ProcessorAttributeRemapperInitParameters `json:"attributeRemapper,omitempty" tf:"attribute_remapper,omitempty"` + + // (Block List, Max: 1) Category Processor. More information can be found in the official docs (see below for nested schema) + // Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor) + CategoryProcessor []ProcessorCategoryProcessorInitParameters `json:"categoryProcessor,omitempty" tf:"category_processor,omitempty"` + + // (Block List, Max: 1) Date Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper) + DateRemapper []ProcessorDateRemapperInitParameters `json:"dateRemapper,omitempty" tf:"date_remapper,omitempty"` + + // (Block List, Max: 1) Date GeoIP Processor. More information can be found in the official docs (see below for nested schema) + // Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser) + GeoIPParser []ProcessorGeoIPParserInitParameters `json:"geoIpParser,omitempty" tf:"geo_ip_parser,omitempty"` + + // (Block List, Max: 1) Grok Processor. More information can be found in the official docs (see below for nested schema) + // Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser) + GrokParser []ProcessorGrokParserInitParameters `json:"grokParser,omitempty" tf:"grok_parser,omitempty"` + + // (Block List, Max: 1) Lookup Processor. More information can be found in the official docs (see below for nested schema) + // Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + LookupProcessor []ProcessorLookupProcessorInitParameters `json:"lookupProcessor,omitempty" tf:"lookup_processor,omitempty"` + + // (Block List, Max: 1) Message Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper) + MessageRemapper []ProcessorMessageRemapperInitParameters `json:"messageRemapper,omitempty" tf:"message_remapper,omitempty"` + + // (Block List, Max: 1) Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the official docs (see below for nested schema) + // Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + ReferenceTableLookupProcessor []ReferenceTableLookupProcessorInitParameters `json:"referenceTableLookupProcessor,omitempty" tf:"reference_table_lookup_processor,omitempty"` + + // (Block List, Max: 1) Service Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper) + ServiceRemapper []ServiceRemapperInitParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Status Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper) + StatusRemapper []StatusRemapperInitParameters `json:"statusRemapper,omitempty" tf:"status_remapper,omitempty"` + + // (Block List, Max: 1) String Builder Processor. More information can be found in the official docs (see below for nested schema) + // String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor) + StringBuilderProcessor []StringBuilderProcessorInitParameters `json:"stringBuilderProcessor,omitempty" tf:"string_builder_processor,omitempty"` + + // (Block List, Max: 1) Trace ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper) + TraceIDRemapper []TraceIDRemapperInitParameters `json:"traceIdRemapper,omitempty" tf:"trace_id_remapper,omitempty"` + + // (Block List, Max: 1) URL Parser Processor. More information can be found in the official docs (see below for nested schema) + // URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser) + URLParser []URLParserInitParameters `json:"urlParser,omitempty" tf:"url_parser,omitempty"` + + // Agent Parser Processor. More information can be found in the official docs (see below for nested schema) + // User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + UserAgentParser []UserAgentParserInitParameters `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` +} + +type PipelineProcessorObservation struct { + + // (Block List, Max: 1) Arithmetic Processor. More information can be found in the official docs (see below for nested schema) + // Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor) + ArithmeticProcessor []ProcessorArithmeticProcessorObservation `json:"arithmeticProcessor,omitempty" tf:"arithmetic_processor,omitempty"` + + // (Block List, Max: 1) Attribute Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper) + AttributeRemapper []ProcessorAttributeRemapperObservation `json:"attributeRemapper,omitempty" tf:"attribute_remapper,omitempty"` + + // (Block List, Max: 1) Category Processor. More information can be found in the official docs (see below for nested schema) + // Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor) + CategoryProcessor []ProcessorCategoryProcessorObservation `json:"categoryProcessor,omitempty" tf:"category_processor,omitempty"` + + // (Block List, Max: 1) Date Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper) + DateRemapper []ProcessorDateRemapperObservation `json:"dateRemapper,omitempty" tf:"date_remapper,omitempty"` + + // (Block List, Max: 1) Date GeoIP Processor. More information can be found in the official docs (see below for nested schema) + // Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser) + GeoIPParser []ProcessorGeoIPParserObservation `json:"geoIpParser,omitempty" tf:"geo_ip_parser,omitempty"` + + // (Block List, Max: 1) Grok Processor. More information can be found in the official docs (see below for nested schema) + // Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser) + GrokParser []ProcessorGrokParserObservation `json:"grokParser,omitempty" tf:"grok_parser,omitempty"` + + // (Block List, Max: 1) Lookup Processor. More information can be found in the official docs (see below for nested schema) + // Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + LookupProcessor []ProcessorLookupProcessorObservation `json:"lookupProcessor,omitempty" tf:"lookup_processor,omitempty"` + + // (Block List, Max: 1) Message Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper) + MessageRemapper []ProcessorMessageRemapperObservation `json:"messageRemapper,omitempty" tf:"message_remapper,omitempty"` + + // (Block List, Max: 1) Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the official docs (see below for nested schema) + // Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + ReferenceTableLookupProcessor []ReferenceTableLookupProcessorObservation `json:"referenceTableLookupProcessor,omitempty" tf:"reference_table_lookup_processor,omitempty"` + + // (Block List, Max: 1) Service Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper) + ServiceRemapper []ServiceRemapperObservation `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Status Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper) + StatusRemapper []StatusRemapperObservation `json:"statusRemapper,omitempty" tf:"status_remapper,omitempty"` + + // (Block List, Max: 1) String Builder Processor. More information can be found in the official docs (see below for nested schema) + // String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor) + StringBuilderProcessor []StringBuilderProcessorObservation `json:"stringBuilderProcessor,omitempty" tf:"string_builder_processor,omitempty"` + + // (Block List, Max: 1) Trace ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper) + TraceIDRemapper []TraceIDRemapperObservation `json:"traceIdRemapper,omitempty" tf:"trace_id_remapper,omitempty"` + + // (Block List, Max: 1) URL Parser Processor. More information can be found in the official docs (see below for nested schema) + // URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser) + URLParser []URLParserObservation `json:"urlParser,omitempty" tf:"url_parser,omitempty"` + + // Agent Parser Processor. More information can be found in the official docs (see below for nested schema) + // User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + UserAgentParser []UserAgentParserObservation `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` +} + +type PipelineProcessorParameters struct { + + // (Block List, Max: 1) Arithmetic Processor. More information can be found in the official docs (see below for nested schema) + // Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor) + // +kubebuilder:validation:Optional + ArithmeticProcessor []ProcessorArithmeticProcessorParameters `json:"arithmeticProcessor,omitempty" tf:"arithmetic_processor,omitempty"` + + // (Block List, Max: 1) Attribute Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper) + // +kubebuilder:validation:Optional + AttributeRemapper []ProcessorAttributeRemapperParameters `json:"attributeRemapper,omitempty" tf:"attribute_remapper,omitempty"` + + // (Block List, Max: 1) Category Processor. More information can be found in the official docs (see below for nested schema) + // Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor) + // +kubebuilder:validation:Optional + CategoryProcessor []ProcessorCategoryProcessorParameters `json:"categoryProcessor,omitempty" tf:"category_processor,omitempty"` + + // (Block List, Max: 1) Date Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper) + // +kubebuilder:validation:Optional + DateRemapper []ProcessorDateRemapperParameters `json:"dateRemapper,omitempty" tf:"date_remapper,omitempty"` + + // (Block List, Max: 1) Date GeoIP Processor. More information can be found in the official docs (see below for nested schema) + // Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser) + // +kubebuilder:validation:Optional + GeoIPParser []ProcessorGeoIPParserParameters `json:"geoIpParser,omitempty" tf:"geo_ip_parser,omitempty"` + + // (Block List, Max: 1) Grok Processor. More information can be found in the official docs (see below for nested schema) + // Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser) + // +kubebuilder:validation:Optional + GrokParser []ProcessorGrokParserParameters `json:"grokParser,omitempty" tf:"grok_parser,omitempty"` + + // (Block List, Max: 1) Lookup Processor. More information can be found in the official docs (see below for nested schema) + // Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + // +kubebuilder:validation:Optional + LookupProcessor []ProcessorLookupProcessorParameters `json:"lookupProcessor,omitempty" tf:"lookup_processor,omitempty"` + + // (Block List, Max: 1) Message Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper) + // +kubebuilder:validation:Optional + MessageRemapper []ProcessorMessageRemapperParameters `json:"messageRemapper,omitempty" tf:"message_remapper,omitempty"` + + // (Block List, Max: 1) Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the official docs (see below for nested schema) + // Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + // +kubebuilder:validation:Optional + ReferenceTableLookupProcessor []ReferenceTableLookupProcessorParameters `json:"referenceTableLookupProcessor,omitempty" tf:"reference_table_lookup_processor,omitempty"` + + // (Block List, Max: 1) Service Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper) + // +kubebuilder:validation:Optional + ServiceRemapper []ServiceRemapperParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Status Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper) + // +kubebuilder:validation:Optional + StatusRemapper []StatusRemapperParameters `json:"statusRemapper,omitempty" tf:"status_remapper,omitempty"` + + // (Block List, Max: 1) String Builder Processor. More information can be found in the official docs (see below for nested schema) + // String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor) + // +kubebuilder:validation:Optional + StringBuilderProcessor []StringBuilderProcessorParameters `json:"stringBuilderProcessor,omitempty" tf:"string_builder_processor,omitempty"` + + // (Block List, Max: 1) Trace ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper) + // +kubebuilder:validation:Optional + TraceIDRemapper []TraceIDRemapperParameters `json:"traceIdRemapper,omitempty" tf:"trace_id_remapper,omitempty"` + + // (Block List, Max: 1) URL Parser Processor. More information can be found in the official docs (see below for nested schema) + // URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser) + // +kubebuilder:validation:Optional + URLParser []URLParserParameters `json:"urlParser,omitempty" tf:"url_parser,omitempty"` + + // Agent Parser Processor. More information can be found in the official docs (see below for nested schema) + // User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + // +kubebuilder:validation:Optional + UserAgentParser []UserAgentParserParameters `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` +} + +type ProcessorArithmeticProcessorInitParameters struct { + + // (String) Arithmetic operation between one or more log attributes. + // Arithmetic operation between one or more log attributes. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (Boolean) + // Boolean value to enable your pipeline. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // Your pipeline name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the arithmetic operation. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorArithmeticProcessorObservation struct { + + // (String) Arithmetic operation between one or more log attributes. + // Arithmetic operation between one or more log attributes. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (Boolean) + // Boolean value to enable your pipeline. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // Your pipeline name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the arithmetic operation. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorArithmeticProcessorParameters struct { + + // (String) Arithmetic operation between one or more log attributes. + // Arithmetic operation between one or more log attributes. + // +kubebuilder:validation:Optional + Expression *string `json:"expression" tf:"expression,omitempty"` + + // (Boolean) + // Boolean value to enable your pipeline. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // +kubebuilder:validation:Optional + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // Your pipeline name. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the arithmetic operation. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ProcessorAttributeRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Override the target element if already set. + // Override the target element if already set. + OverrideOnConflict *bool `json:"overrideOnConflict,omitempty" tf:"override_on_conflict,omitempty"` + + // (Boolean) Remove or preserve the remapped source element. + // Remove or preserve the remapped source element. + PreserveSource *bool `json:"preserveSource,omitempty" tf:"preserve_source,omitempty"` + + // (String) Defines where the sources are from (log attribute or tag). + // Defines where the sources are from (log `attribute` or `tag`). + SourceType *string `json:"sourceType,omitempty" tf:"source_type,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes or tags. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Final attribute or tag name to remap the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) If the target_type of the remapper is attribute, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. string, integer, or double are the possible types. If the target_type is tag, this parameter may not be specified. + // If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified. + TargetFormat *string `json:"targetFormat,omitempty" tf:"target_format,omitempty"` + + // (String) Defines if the target is a log attribute or tag. + // Defines if the target is a log `attribute` or `tag`. + TargetType *string `json:"targetType,omitempty" tf:"target_type,omitempty"` +} + +type ProcessorAttributeRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Override the target element if already set. + // Override the target element if already set. + OverrideOnConflict *bool `json:"overrideOnConflict,omitempty" tf:"override_on_conflict,omitempty"` + + // (Boolean) Remove or preserve the remapped source element. + // Remove or preserve the remapped source element. + PreserveSource *bool `json:"preserveSource,omitempty" tf:"preserve_source,omitempty"` + + // (String) Defines where the sources are from (log attribute or tag). + // Defines where the sources are from (log `attribute` or `tag`). + SourceType *string `json:"sourceType,omitempty" tf:"source_type,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes or tags. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Final attribute or tag name to remap the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) If the target_type of the remapper is attribute, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. string, integer, or double are the possible types. If the target_type is tag, this parameter may not be specified. + // If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified. + TargetFormat *string `json:"targetFormat,omitempty" tf:"target_format,omitempty"` + + // (String) Defines if the target is a log attribute or tag. + // Defines if the target is a log `attribute` or `tag`. + TargetType *string `json:"targetType,omitempty" tf:"target_type,omitempty"` +} + +type ProcessorAttributeRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Override the target element if already set. + // Override the target element if already set. + // +kubebuilder:validation:Optional + OverrideOnConflict *bool `json:"overrideOnConflict,omitempty" tf:"override_on_conflict,omitempty"` + + // (Boolean) Remove or preserve the remapped source element. + // Remove or preserve the remapped source element. + // +kubebuilder:validation:Optional + PreserveSource *bool `json:"preserveSource,omitempty" tf:"preserve_source,omitempty"` + + // (String) Defines where the sources are from (log attribute or tag). + // Defines where the sources are from (log `attribute` or `tag`). + // +kubebuilder:validation:Optional + SourceType *string `json:"sourceType" tf:"source_type,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes or tags. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Final attribute or tag name to remap the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` + + // (String) If the target_type of the remapper is attribute, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. string, integer, or double are the possible types. If the target_type is tag, this parameter may not be specified. + // If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified. + // +kubebuilder:validation:Optional + TargetFormat *string `json:"targetFormat,omitempty" tf:"target_format,omitempty"` + + // (String) Defines if the target is a log attribute or tag. + // Defines if the target is a log `attribute` or `tag`. + // +kubebuilder:validation:Optional + TargetType *string `json:"targetType" tf:"target_type,omitempty"` +} + +type ProcessorCategoryProcessorInitParameters struct { + + // (Block List, Min: 1) List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. (see below for nested schema) + // List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. + Category []CategoryProcessorCategoryInitParameters `json:"category,omitempty" tf:"category,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the category + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the target attribute whose value is defined by the matching category. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorCategoryProcessorObservation struct { + + // (Block List, Min: 1) List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. (see below for nested schema) + // List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. + Category []CategoryProcessorCategoryObservation `json:"category,omitempty" tf:"category,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the category + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the target attribute whose value is defined by the matching category. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorCategoryProcessorParameters struct { + + // (Block List, Min: 1) List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. (see below for nested schema) + // List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. + // +kubebuilder:validation:Optional + Category []CategoryProcessorCategoryParameters `json:"category" tf:"category,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the category + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the target attribute whose value is defined by the matching category. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ProcessorDateRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorDateRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorDateRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type ProcessorGeoIPParserInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorGeoIPParserObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorGeoIPParserParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ProcessorGrokParserInitParameters struct { + + // (Block List, Min: 1, Max: 1) (see below for nested schema) + Grok []GrokParserGrokInitParameters `json:"grok,omitempty" tf:"grok,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + Samples []*string `json:"samples,omitempty" tf:"samples,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the log attribute to parse. + Source *string `json:"source,omitempty" tf:"source,omitempty"` +} + +type ProcessorGrokParserObservation struct { + + // (Block List, Min: 1, Max: 1) (see below for nested schema) + Grok []GrokParserGrokObservation `json:"grok,omitempty" tf:"grok,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + Samples []*string `json:"samples,omitempty" tf:"samples,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the log attribute to parse. + Source *string `json:"source,omitempty" tf:"source,omitempty"` +} + +type ProcessorGrokParserParameters struct { + + // (Block List, Min: 1, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Grok []GrokParserGrokParameters `json:"grok" tf:"grok,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + // +kubebuilder:validation:Optional + Samples []*string `json:"samples,omitempty" tf:"samples,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the log attribute to parse. + // +kubebuilder:validation:Optional + Source *string `json:"source" tf:"source,omitempty"` +} + +type ProcessorInitParameters struct { + + // (Block List, Max: 1) Arithmetic Processor. More information can be found in the official docs (see below for nested schema) + // Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor) + ArithmeticProcessor []ArithmeticProcessorInitParameters `json:"arithmeticProcessor,omitempty" tf:"arithmetic_processor,omitempty"` + + // (Block List, Max: 1) Attribute Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper) + AttributeRemapper []AttributeRemapperInitParameters `json:"attributeRemapper,omitempty" tf:"attribute_remapper,omitempty"` + + // (Block List, Max: 1) Category Processor. More information can be found in the official docs (see below for nested schema) + // Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor) + CategoryProcessor []CategoryProcessorInitParameters `json:"categoryProcessor,omitempty" tf:"category_processor,omitempty"` + + // (Block List, Max: 1) Date Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper) + DateRemapper []DateRemapperInitParameters `json:"dateRemapper,omitempty" tf:"date_remapper,omitempty"` + + // (Block List, Max: 1) Date GeoIP Processor. More information can be found in the official docs (see below for nested schema) + // Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser) + GeoIPParser []GeoIPParserInitParameters `json:"geoIpParser,omitempty" tf:"geo_ip_parser,omitempty"` + + // (Block List, Max: 1) Grok Processor. More information can be found in the official docs (see below for nested schema) + // Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser) + GrokParser []GrokParserInitParameters `json:"grokParser,omitempty" tf:"grok_parser,omitempty"` + + // (Block List, Max: 1) Lookup Processor. More information can be found in the official docs (see below for nested schema) + // Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + LookupProcessor []LookupProcessorInitParameters `json:"lookupProcessor,omitempty" tf:"lookup_processor,omitempty"` + + // (Block List, Max: 1) Message Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper) + MessageRemapper []MessageRemapperInitParameters `json:"messageRemapper,omitempty" tf:"message_remapper,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Pipeline []PipelineInitParameters `json:"pipeline,omitempty" tf:"pipeline,omitempty"` + + // (Block List, Max: 1) Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the official docs (see below for nested schema) + // Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + ReferenceTableLookupProcessor []ProcessorReferenceTableLookupProcessorInitParameters `json:"referenceTableLookupProcessor,omitempty" tf:"reference_table_lookup_processor,omitempty"` + + // (Block List, Max: 1) Service Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper) + ServiceRemapper []ProcessorServiceRemapperInitParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Status Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper) + StatusRemapper []ProcessorStatusRemapperInitParameters `json:"statusRemapper,omitempty" tf:"status_remapper,omitempty"` + + // (Block List, Max: 1) String Builder Processor. More information can be found in the official docs (see below for nested schema) + // String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor) + StringBuilderProcessor []ProcessorStringBuilderProcessorInitParameters `json:"stringBuilderProcessor,omitempty" tf:"string_builder_processor,omitempty"` + + // (Block List, Max: 1) Trace ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper) + TraceIDRemapper []ProcessorTraceIDRemapperInitParameters `json:"traceIdRemapper,omitempty" tf:"trace_id_remapper,omitempty"` + + // (Block List, Max: 1) URL Parser Processor. More information can be found in the official docs (see below for nested schema) + // URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser) + URLParser []ProcessorURLParserInitParameters `json:"urlParser,omitempty" tf:"url_parser,omitempty"` + + // Agent Parser Processor. More information can be found in the official docs (see below for nested schema) + // User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + UserAgentParser []ProcessorUserAgentParserInitParameters `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` +} + +type ProcessorLookupProcessorInitParameters struct { + + // (String) Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + DefaultLookup *string `json:"defaultLookup,omitempty" tf:"default_lookup,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (List of String) List of entries of the lookup table using key,value format. + // List of entries of the lookup table using `key,value` format. + LookupTable []*string `json:"lookupTable,omitempty" tf:"lookup_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorLookupProcessorObservation struct { + + // (String) Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + DefaultLookup *string `json:"defaultLookup,omitempty" tf:"default_lookup,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (List of String) List of entries of the lookup table using key,value format. + // List of entries of the lookup table using `key,value` format. + LookupTable []*string `json:"lookupTable,omitempty" tf:"lookup_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorLookupProcessorParameters struct { + + // (String) Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + // +kubebuilder:validation:Optional + DefaultLookup *string `json:"defaultLookup,omitempty" tf:"default_lookup,omitempty"` + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (List of String) List of entries of the lookup table using key,value format. + // List of entries of the lookup table using `key,value` format. + // +kubebuilder:validation:Optional + LookupTable []*string `json:"lookupTable" tf:"lookup_table,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + // +kubebuilder:validation:Optional + Source *string `json:"source" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ProcessorMessageRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorMessageRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorMessageRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type ProcessorObservation struct { + + // (Block List, Max: 1) Arithmetic Processor. More information can be found in the official docs (see below for nested schema) + // Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor) + ArithmeticProcessor []ArithmeticProcessorObservation `json:"arithmeticProcessor,omitempty" tf:"arithmetic_processor,omitempty"` + + // (Block List, Max: 1) Attribute Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper) + AttributeRemapper []AttributeRemapperObservation `json:"attributeRemapper,omitempty" tf:"attribute_remapper,omitempty"` + + // (Block List, Max: 1) Category Processor. More information can be found in the official docs (see below for nested schema) + // Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor) + CategoryProcessor []CategoryProcessorObservation `json:"categoryProcessor,omitempty" tf:"category_processor,omitempty"` + + // (Block List, Max: 1) Date Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper) + DateRemapper []DateRemapperObservation `json:"dateRemapper,omitempty" tf:"date_remapper,omitempty"` + + // (Block List, Max: 1) Date GeoIP Processor. More information can be found in the official docs (see below for nested schema) + // Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser) + GeoIPParser []GeoIPParserObservation `json:"geoIpParser,omitempty" tf:"geo_ip_parser,omitempty"` + + // (Block List, Max: 1) Grok Processor. More information can be found in the official docs (see below for nested schema) + // Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser) + GrokParser []GrokParserObservation `json:"grokParser,omitempty" tf:"grok_parser,omitempty"` + + // (Block List, Max: 1) Lookup Processor. More information can be found in the official docs (see below for nested schema) + // Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + LookupProcessor []LookupProcessorObservation `json:"lookupProcessor,omitempty" tf:"lookup_processor,omitempty"` + + // (Block List, Max: 1) Message Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper) + MessageRemapper []MessageRemapperObservation `json:"messageRemapper,omitempty" tf:"message_remapper,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Pipeline []PipelineObservation `json:"pipeline,omitempty" tf:"pipeline,omitempty"` + + // (Block List, Max: 1) Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the official docs (see below for nested schema) + // Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + ReferenceTableLookupProcessor []ProcessorReferenceTableLookupProcessorObservation `json:"referenceTableLookupProcessor,omitempty" tf:"reference_table_lookup_processor,omitempty"` + + // (Block List, Max: 1) Service Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper) + ServiceRemapper []ProcessorServiceRemapperObservation `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Status Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper) + StatusRemapper []ProcessorStatusRemapperObservation `json:"statusRemapper,omitempty" tf:"status_remapper,omitempty"` + + // (Block List, Max: 1) String Builder Processor. More information can be found in the official docs (see below for nested schema) + // String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor) + StringBuilderProcessor []ProcessorStringBuilderProcessorObservation `json:"stringBuilderProcessor,omitempty" tf:"string_builder_processor,omitempty"` + + // (Block List, Max: 1) Trace ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper) + TraceIDRemapper []ProcessorTraceIDRemapperObservation `json:"traceIdRemapper,omitempty" tf:"trace_id_remapper,omitempty"` + + // (Block List, Max: 1) URL Parser Processor. More information can be found in the official docs (see below for nested schema) + // URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser) + URLParser []ProcessorURLParserObservation `json:"urlParser,omitempty" tf:"url_parser,omitempty"` + + // Agent Parser Processor. More information can be found in the official docs (see below for nested schema) + // User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + UserAgentParser []ProcessorUserAgentParserObservation `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` +} + +type ProcessorParameters struct { + + // (Block List, Max: 1) Arithmetic Processor. More information can be found in the official docs (see below for nested schema) + // Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor) + // +kubebuilder:validation:Optional + ArithmeticProcessor []ArithmeticProcessorParameters `json:"arithmeticProcessor,omitempty" tf:"arithmetic_processor,omitempty"` + + // (Block List, Max: 1) Attribute Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper) + // +kubebuilder:validation:Optional + AttributeRemapper []AttributeRemapperParameters `json:"attributeRemapper,omitempty" tf:"attribute_remapper,omitempty"` + + // (Block List, Max: 1) Category Processor. More information can be found in the official docs (see below for nested schema) + // Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor) + // +kubebuilder:validation:Optional + CategoryProcessor []CategoryProcessorParameters `json:"categoryProcessor,omitempty" tf:"category_processor,omitempty"` + + // (Block List, Max: 1) Date Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper) + // +kubebuilder:validation:Optional + DateRemapper []DateRemapperParameters `json:"dateRemapper,omitempty" tf:"date_remapper,omitempty"` + + // (Block List, Max: 1) Date GeoIP Processor. More information can be found in the official docs (see below for nested schema) + // Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser) + // +kubebuilder:validation:Optional + GeoIPParser []GeoIPParserParameters `json:"geoIpParser,omitempty" tf:"geo_ip_parser,omitempty"` + + // (Block List, Max: 1) Grok Processor. More information can be found in the official docs (see below for nested schema) + // Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser) + // +kubebuilder:validation:Optional + GrokParser []GrokParserParameters `json:"grokParser,omitempty" tf:"grok_parser,omitempty"` + + // (Block List, Max: 1) Lookup Processor. More information can be found in the official docs (see below for nested schema) + // Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + // +kubebuilder:validation:Optional + LookupProcessor []LookupProcessorParameters `json:"lookupProcessor,omitempty" tf:"lookup_processor,omitempty"` + + // (Block List, Max: 1) Message Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper) + // +kubebuilder:validation:Optional + MessageRemapper []MessageRemapperParameters `json:"messageRemapper,omitempty" tf:"message_remapper,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Pipeline []PipelineParameters `json:"pipeline,omitempty" tf:"pipeline,omitempty"` + + // (Block List, Max: 1) Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the official docs (see below for nested schema) + // Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor) + // +kubebuilder:validation:Optional + ReferenceTableLookupProcessor []ProcessorReferenceTableLookupProcessorParameters `json:"referenceTableLookupProcessor,omitempty" tf:"reference_table_lookup_processor,omitempty"` + + // (Block List, Max: 1) Service Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper) + // +kubebuilder:validation:Optional + ServiceRemapper []ProcessorServiceRemapperParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Status Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper) + // +kubebuilder:validation:Optional + StatusRemapper []ProcessorStatusRemapperParameters `json:"statusRemapper,omitempty" tf:"status_remapper,omitempty"` + + // (Block List, Max: 1) String Builder Processor. More information can be found in the official docs (see below for nested schema) + // String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor) + // +kubebuilder:validation:Optional + StringBuilderProcessor []ProcessorStringBuilderProcessorParameters `json:"stringBuilderProcessor,omitempty" tf:"string_builder_processor,omitempty"` + + // (Block List, Max: 1) Trace ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper) + // +kubebuilder:validation:Optional + TraceIDRemapper []ProcessorTraceIDRemapperParameters `json:"traceIdRemapper,omitempty" tf:"trace_id_remapper,omitempty"` + + // (Block List, Max: 1) URL Parser Processor. More information can be found in the official docs (see below for nested schema) + // URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser) + // +kubebuilder:validation:Optional + URLParser []ProcessorURLParserParameters `json:"urlParser,omitempty" tf:"url_parser,omitempty"` + + // Agent Parser Processor. More information can be found in the official docs (see below for nested schema) + // User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + // +kubebuilder:validation:Optional + UserAgentParser []ProcessorUserAgentParserParameters `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` +} + +type ProcessorReferenceTableLookupProcessorInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Reference Table for the source attribute and their associated target attribute values. + // Name of the Reference Table for the source attribute and their associated target attribute values. + LookupEnrichmentTable *string `json:"lookupEnrichmentTable,omitempty" tf:"lookup_enrichment_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorReferenceTableLookupProcessorObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Reference Table for the source attribute and their associated target attribute values. + // Name of the Reference Table for the source attribute and their associated target attribute values. + LookupEnrichmentTable *string `json:"lookupEnrichmentTable,omitempty" tf:"lookup_enrichment_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorReferenceTableLookupProcessorParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Reference Table for the source attribute and their associated target attribute values. + // Name of the Reference Table for the source attribute and their associated target attribute values. + // +kubebuilder:validation:Optional + LookupEnrichmentTable *string `json:"lookupEnrichmentTable" tf:"lookup_enrichment_table,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + // +kubebuilder:validation:Optional + Source *string `json:"source" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ProcessorServiceRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorServiceRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorServiceRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type ProcessorStatusRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorStatusRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorStatusRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type ProcessorStringBuilderProcessorInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If it replaces all missing attributes of template by an empty string. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // The name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // The name of the attribute that contains the result of the template. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) The formula with one or more attributes and raw text. + // The formula with one or more attributes and raw text. + Template *string `json:"template,omitempty" tf:"template,omitempty"` +} + +type ProcessorStringBuilderProcessorObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If it replaces all missing attributes of template by an empty string. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // The name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // The name of the attribute that contains the result of the template. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) The formula with one or more attributes and raw text. + // The formula with one or more attributes and raw text. + Template *string `json:"template,omitempty" tf:"template,omitempty"` +} + +type ProcessorStringBuilderProcessorParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If it replaces all missing attributes of template by an empty string. + // +kubebuilder:validation:Optional + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // The name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // The name of the attribute that contains the result of the template. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` + + // (String) The formula with one or more attributes and raw text. + // The formula with one or more attributes and raw text. + // +kubebuilder:validation:Optional + Template *string `json:"template" tf:"template,omitempty"` +} + +type ProcessorTraceIDRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorTraceIDRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ProcessorTraceIDRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type ProcessorURLParserInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Normalize the ending slashes or not. + // Normalize the ending slashes or not. + NormalizeEndingSlashes *bool `json:"normalizeEndingSlashes,omitempty" tf:"normalize_ending_slashes,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorURLParserObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Normalize the ending slashes or not. + // Normalize the ending slashes or not. + NormalizeEndingSlashes *bool `json:"normalizeEndingSlashes,omitempty" tf:"normalize_ending_slashes,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorURLParserParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Normalize the ending slashes or not. + // Normalize the ending slashes or not. + // +kubebuilder:validation:Optional + NormalizeEndingSlashes *bool `json:"normalizeEndingSlashes,omitempty" tf:"normalize_ending_slashes,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ProcessorUserAgentParserInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If the source attribute is URL encoded or not. + // If the source attribute is URL encoded or not. + IsEncoded *bool `json:"isEncoded,omitempty" tf:"is_encoded,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorUserAgentParserObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If the source attribute is URL encoded or not. + // If the source attribute is URL encoded or not. + IsEncoded *bool `json:"isEncoded,omitempty" tf:"is_encoded,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ProcessorUserAgentParserParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If the source attribute is URL encoded or not. + // If the source attribute is URL encoded or not. + // +kubebuilder:validation:Optional + IsEncoded *bool `json:"isEncoded,omitempty" tf:"is_encoded,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ReferenceTableLookupProcessorInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Reference Table for the source attribute and their associated target attribute values. + // Name of the Reference Table for the source attribute and their associated target attribute values. + LookupEnrichmentTable *string `json:"lookupEnrichmentTable,omitempty" tf:"lookup_enrichment_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ReferenceTableLookupProcessorObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Reference Table for the source attribute and their associated target attribute values. + // Name of the Reference Table for the source attribute and their associated target attribute values. + LookupEnrichmentTable *string `json:"lookupEnrichmentTable,omitempty" tf:"lookup_enrichment_table,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + Source *string `json:"source,omitempty" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type ReferenceTableLookupProcessorParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Reference Table for the source attribute and their associated target attribute values. + // Name of the Reference Table for the source attribute and their associated target attribute values. + // +kubebuilder:validation:Optional + LookupEnrichmentTable *string `json:"lookupEnrichmentTable" tf:"lookup_enrichment_table,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the log attribute to parse. + // Name of the source attribute used to do the lookup. + // +kubebuilder:validation:Optional + Source *string `json:"source" tf:"source,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the attribute that contains the result of the lookup. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type ServiceRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ServiceRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type ServiceRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type StatusRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type StatusRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type StatusRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type StringBuilderProcessorInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If it replaces all missing attributes of template by an empty string. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // The name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // The name of the attribute that contains the result of the template. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) The formula with one or more attributes and raw text. + // The formula with one or more attributes and raw text. + Template *string `json:"template,omitempty" tf:"template,omitempty"` +} + +type StringBuilderProcessorObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If it replaces all missing attributes of template by an empty string. + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // The name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // The name of the attribute that contains the result of the template. + Target *string `json:"target,omitempty" tf:"target,omitempty"` + + // (String) The formula with one or more attributes and raw text. + // The formula with one or more attributes and raw text. + Template *string `json:"template,omitempty" tf:"template,omitempty"` +} + +type StringBuilderProcessorParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + // If it replaces all missing attributes of template by an empty string. + // +kubebuilder:validation:Optional + IsReplaceMissing *bool `json:"isReplaceMissing,omitempty" tf:"is_replace_missing,omitempty"` + + // (String) + // The name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // The name of the attribute that contains the result of the template. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` + + // (String) The formula with one or more attributes and raw text. + // The formula with one or more attributes and raw text. + // +kubebuilder:validation:Optional + Template *string `json:"template" tf:"template,omitempty"` +} + +type TraceIDRemapperInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type TraceIDRemapperObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` +} + +type TraceIDRemapperParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` +} + +type URLParserInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Normalize the ending slashes or not. + // Normalize the ending slashes or not. + NormalizeEndingSlashes *bool `json:"normalizeEndingSlashes,omitempty" tf:"normalize_ending_slashes,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type URLParserObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Normalize the ending slashes or not. + // Normalize the ending slashes or not. + NormalizeEndingSlashes *bool `json:"normalizeEndingSlashes,omitempty" tf:"normalize_ending_slashes,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type URLParserParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Normalize the ending slashes or not. + // Normalize the ending slashes or not. + // +kubebuilder:validation:Optional + NormalizeEndingSlashes *bool `json:"normalizeEndingSlashes,omitempty" tf:"normalize_ending_slashes,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +type UserAgentParserInitParameters struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If the source attribute is URL encoded or not. + // If the source attribute is URL encoded or not. + IsEncoded *bool `json:"isEncoded,omitempty" tf:"is_encoded,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type UserAgentParserObservation struct { + + // (Boolean) + // If the processor is enabled or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If the source attribute is URL encoded or not. + // If the source attribute is URL encoded or not. + IsEncoded *bool `json:"isEncoded,omitempty" tf:"is_encoded,omitempty"` + + // (String) + // Name of the processor + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + Sources []*string `json:"sources,omitempty" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + Target *string `json:"target,omitempty" tf:"target,omitempty"` +} + +type UserAgentParserParameters struct { + + // (Boolean) + // If the processor is enabled or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (Boolean) If the source attribute is URL encoded or not. + // If the source attribute is URL encoded or not. + // +kubebuilder:validation:Optional + IsEncoded *bool `json:"isEncoded,omitempty" tf:"is_encoded,omitempty"` + + // (String) + // Name of the processor + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) List of source attributes or tags. + // List of source attributes. + // +kubebuilder:validation:Optional + Sources []*string `json:"sources" tf:"sources,omitempty"` + + // (String) Name of the attribute that contains the result of the arithmetic operation. + // Name of the parent attribute that contains all the extracted details from the sources. + // +kubebuilder:validation:Optional + Target *string `json:"target" tf:"target,omitempty"` +} + +// CustomPipelineSpec defines the desired state of CustomPipeline +type CustomPipelineSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider CustomPipelineParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider CustomPipelineInitParameters `json:"initProvider,omitempty"` +} + +// CustomPipelineStatus defines the observed state of CustomPipeline. +type CustomPipelineStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider CustomPipelineObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// CustomPipeline is the Schema for the CustomPipelines API. Provides a Datadog Logs Pipeline API https://docs.datadoghq.com/api/v1/logs-pipelines/ resource, which is used to create and manage Datadog logs custom pipelines. Each datadog_logs_custom_pipeline resource defines a complete pipeline. The order of the pipelines is maintained in a different resource: datadog_logs_pipeline_order. When creating a new pipeline, you need to explicitly add this pipeline to the datadog_logs_pipeline_order resource to track the pipeline. Similarly, when a pipeline needs to be destroyed, remove its references from the datadog_logs_pipeline_order resource. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type CustomPipeline struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.filter) || (has(self.initProvider) && has(self.initProvider.filter))",message="spec.forProvider.filter is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec CustomPipelineSpec `json:"spec"` + Status CustomPipelineStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// CustomPipelineList contains a list of CustomPipelines +type CustomPipelineList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CustomPipeline `json:"items"` +} + +// Repository type metadata. +var ( + CustomPipeline_Kind = "CustomPipeline" + CustomPipeline_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: CustomPipeline_Kind}.String() + CustomPipeline_KindAPIVersion = CustomPipeline_Kind + "." + CRDGroupVersion.String() + CustomPipeline_GroupVersionKind = CRDGroupVersion.WithKind(CustomPipeline_Kind) +) + +func init() { + SchemeBuilder.Register(&CustomPipeline{}, &CustomPipelineList{}) +} diff --git a/apis/logs/v1alpha1/zz_generated.conversion_hubs.go b/apis/logs/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..da67a7f --- /dev/null +++ b/apis/logs/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *Archive) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ArchiveOrder) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *CustomPipeline) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Index) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *IndexOrder) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *IntegrationPipeline) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Metric) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *PipelineOrder) Hub() {} diff --git a/apis/logs/v1alpha1/zz_generated.deepcopy.go b/apis/logs/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..c252217 --- /dev/null +++ b/apis/logs/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,7834 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Archive) DeepCopyInto(out *Archive) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Archive. +func (in *Archive) DeepCopy() *Archive { + if in == nil { + return nil + } + out := new(Archive) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Archive) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveInitParameters) DeepCopyInto(out *ArchiveInitParameters) { + *out = *in + if in.AzureArchive != nil { + in, out := &in.AzureArchive, &out.AzureArchive + *out = make([]AzureArchiveInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GcsArchive != nil { + in, out := &in.GcsArchive, &out.GcsArchive + *out = make([]GcsArchiveInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IncludeTags != nil { + in, out := &in.IncludeTags, &out.IncludeTags + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.RehydrationMaxScanSizeInGb != nil { + in, out := &in.RehydrationMaxScanSizeInGb, &out.RehydrationMaxScanSizeInGb + *out = new(float64) + **out = **in + } + if in.RehydrationTags != nil { + in, out := &in.RehydrationTags, &out.RehydrationTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.S3Archive != nil { + in, out := &in.S3Archive, &out.S3Archive + *out = make([]S3ArchiveInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveInitParameters. +func (in *ArchiveInitParameters) DeepCopy() *ArchiveInitParameters { + if in == nil { + return nil + } + out := new(ArchiveInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveList) DeepCopyInto(out *ArchiveList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Archive, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveList. +func (in *ArchiveList) DeepCopy() *ArchiveList { + if in == nil { + return nil + } + out := new(ArchiveList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ArchiveList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveObservation) DeepCopyInto(out *ArchiveObservation) { + *out = *in + if in.AzureArchive != nil { + in, out := &in.AzureArchive, &out.AzureArchive + *out = make([]AzureArchiveObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GcsArchive != nil { + in, out := &in.GcsArchive, &out.GcsArchive + *out = make([]GcsArchiveObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IncludeTags != nil { + in, out := &in.IncludeTags, &out.IncludeTags + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.RehydrationMaxScanSizeInGb != nil { + in, out := &in.RehydrationMaxScanSizeInGb, &out.RehydrationMaxScanSizeInGb + *out = new(float64) + **out = **in + } + if in.RehydrationTags != nil { + in, out := &in.RehydrationTags, &out.RehydrationTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.S3Archive != nil { + in, out := &in.S3Archive, &out.S3Archive + *out = make([]S3ArchiveObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveObservation. +func (in *ArchiveObservation) DeepCopy() *ArchiveObservation { + if in == nil { + return nil + } + out := new(ArchiveObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveOrder) DeepCopyInto(out *ArchiveOrder) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrder. +func (in *ArchiveOrder) DeepCopy() *ArchiveOrder { + if in == nil { + return nil + } + out := new(ArchiveOrder) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ArchiveOrder) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveOrderInitParameters) DeepCopyInto(out *ArchiveOrderInitParameters) { + *out = *in + if in.ArchiveIds != nil { + in, out := &in.ArchiveIds, &out.ArchiveIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderInitParameters. +func (in *ArchiveOrderInitParameters) DeepCopy() *ArchiveOrderInitParameters { + if in == nil { + return nil + } + out := new(ArchiveOrderInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveOrderList) DeepCopyInto(out *ArchiveOrderList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ArchiveOrder, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderList. +func (in *ArchiveOrderList) DeepCopy() *ArchiveOrderList { + if in == nil { + return nil + } + out := new(ArchiveOrderList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ArchiveOrderList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveOrderObservation) DeepCopyInto(out *ArchiveOrderObservation) { + *out = *in + if in.ArchiveIds != nil { + in, out := &in.ArchiveIds, &out.ArchiveIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderObservation. +func (in *ArchiveOrderObservation) DeepCopy() *ArchiveOrderObservation { + if in == nil { + return nil + } + out := new(ArchiveOrderObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveOrderParameters) DeepCopyInto(out *ArchiveOrderParameters) { + *out = *in + if in.ArchiveIds != nil { + in, out := &in.ArchiveIds, &out.ArchiveIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderParameters. +func (in *ArchiveOrderParameters) DeepCopy() *ArchiveOrderParameters { + if in == nil { + return nil + } + out := new(ArchiveOrderParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveOrderSpec) DeepCopyInto(out *ArchiveOrderSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderSpec. +func (in *ArchiveOrderSpec) DeepCopy() *ArchiveOrderSpec { + if in == nil { + return nil + } + out := new(ArchiveOrderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveOrderStatus) DeepCopyInto(out *ArchiveOrderStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderStatus. +func (in *ArchiveOrderStatus) DeepCopy() *ArchiveOrderStatus { + if in == nil { + return nil + } + out := new(ArchiveOrderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveParameters) DeepCopyInto(out *ArchiveParameters) { + *out = *in + if in.AzureArchive != nil { + in, out := &in.AzureArchive, &out.AzureArchive + *out = make([]AzureArchiveParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GcsArchive != nil { + in, out := &in.GcsArchive, &out.GcsArchive + *out = make([]GcsArchiveParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IncludeTags != nil { + in, out := &in.IncludeTags, &out.IncludeTags + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.RehydrationMaxScanSizeInGb != nil { + in, out := &in.RehydrationMaxScanSizeInGb, &out.RehydrationMaxScanSizeInGb + *out = new(float64) + **out = **in + } + if in.RehydrationTags != nil { + in, out := &in.RehydrationTags, &out.RehydrationTags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.S3Archive != nil { + in, out := &in.S3Archive, &out.S3Archive + *out = make([]S3ArchiveParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveParameters. +func (in *ArchiveParameters) DeepCopy() *ArchiveParameters { + if in == nil { + return nil + } + out := new(ArchiveParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveSpec) DeepCopyInto(out *ArchiveSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveSpec. +func (in *ArchiveSpec) DeepCopy() *ArchiveSpec { + if in == nil { + return nil + } + out := new(ArchiveSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArchiveStatus) DeepCopyInto(out *ArchiveStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveStatus. +func (in *ArchiveStatus) DeepCopy() *ArchiveStatus { + if in == nil { + return nil + } + out := new(ArchiveStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArithmeticProcessorInitParameters) DeepCopyInto(out *ArithmeticProcessorInitParameters) { + *out = *in + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArithmeticProcessorInitParameters. +func (in *ArithmeticProcessorInitParameters) DeepCopy() *ArithmeticProcessorInitParameters { + if in == nil { + return nil + } + out := new(ArithmeticProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArithmeticProcessorObservation) DeepCopyInto(out *ArithmeticProcessorObservation) { + *out = *in + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArithmeticProcessorObservation. +func (in *ArithmeticProcessorObservation) DeepCopy() *ArithmeticProcessorObservation { + if in == nil { + return nil + } + out := new(ArithmeticProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArithmeticProcessorParameters) DeepCopyInto(out *ArithmeticProcessorParameters) { + *out = *in + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArithmeticProcessorParameters. +func (in *ArithmeticProcessorParameters) DeepCopy() *ArithmeticProcessorParameters { + if in == nil { + return nil + } + out := new(ArithmeticProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AttributeRemapperInitParameters) DeepCopyInto(out *AttributeRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OverrideOnConflict != nil { + in, out := &in.OverrideOnConflict, &out.OverrideOnConflict + *out = new(bool) + **out = **in + } + if in.PreserveSource != nil { + in, out := &in.PreserveSource, &out.PreserveSource + *out = new(bool) + **out = **in + } + if in.SourceType != nil { + in, out := &in.SourceType, &out.SourceType + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.TargetFormat != nil { + in, out := &in.TargetFormat, &out.TargetFormat + *out = new(string) + **out = **in + } + if in.TargetType != nil { + in, out := &in.TargetType, &out.TargetType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AttributeRemapperInitParameters. +func (in *AttributeRemapperInitParameters) DeepCopy() *AttributeRemapperInitParameters { + if in == nil { + return nil + } + out := new(AttributeRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AttributeRemapperObservation) DeepCopyInto(out *AttributeRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OverrideOnConflict != nil { + in, out := &in.OverrideOnConflict, &out.OverrideOnConflict + *out = new(bool) + **out = **in + } + if in.PreserveSource != nil { + in, out := &in.PreserveSource, &out.PreserveSource + *out = new(bool) + **out = **in + } + if in.SourceType != nil { + in, out := &in.SourceType, &out.SourceType + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.TargetFormat != nil { + in, out := &in.TargetFormat, &out.TargetFormat + *out = new(string) + **out = **in + } + if in.TargetType != nil { + in, out := &in.TargetType, &out.TargetType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AttributeRemapperObservation. +func (in *AttributeRemapperObservation) DeepCopy() *AttributeRemapperObservation { + if in == nil { + return nil + } + out := new(AttributeRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AttributeRemapperParameters) DeepCopyInto(out *AttributeRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OverrideOnConflict != nil { + in, out := &in.OverrideOnConflict, &out.OverrideOnConflict + *out = new(bool) + **out = **in + } + if in.PreserveSource != nil { + in, out := &in.PreserveSource, &out.PreserveSource + *out = new(bool) + **out = **in + } + if in.SourceType != nil { + in, out := &in.SourceType, &out.SourceType + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.TargetFormat != nil { + in, out := &in.TargetFormat, &out.TargetFormat + *out = new(string) + **out = **in + } + if in.TargetType != nil { + in, out := &in.TargetType, &out.TargetType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AttributeRemapperParameters. +func (in *AttributeRemapperParameters) DeepCopy() *AttributeRemapperParameters { + if in == nil { + return nil + } + out := new(AttributeRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureArchiveInitParameters) DeepCopyInto(out *AzureArchiveInitParameters) { + *out = *in + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.Container != nil { + in, out := &in.Container, &out.Container + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.StorageAccount != nil { + in, out := &in.StorageAccount, &out.StorageAccount + *out = new(string) + **out = **in + } + if in.TenantID != nil { + in, out := &in.TenantID, &out.TenantID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureArchiveInitParameters. +func (in *AzureArchiveInitParameters) DeepCopy() *AzureArchiveInitParameters { + if in == nil { + return nil + } + out := new(AzureArchiveInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureArchiveObservation) DeepCopyInto(out *AzureArchiveObservation) { + *out = *in + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.Container != nil { + in, out := &in.Container, &out.Container + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.StorageAccount != nil { + in, out := &in.StorageAccount, &out.StorageAccount + *out = new(string) + **out = **in + } + if in.TenantID != nil { + in, out := &in.TenantID, &out.TenantID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureArchiveObservation. +func (in *AzureArchiveObservation) DeepCopy() *AzureArchiveObservation { + if in == nil { + return nil + } + out := new(AzureArchiveObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureArchiveParameters) DeepCopyInto(out *AzureArchiveParameters) { + *out = *in + if in.ClientID != nil { + in, out := &in.ClientID, &out.ClientID + *out = new(string) + **out = **in + } + if in.Container != nil { + in, out := &in.Container, &out.Container + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.StorageAccount != nil { + in, out := &in.StorageAccount, &out.StorageAccount + *out = new(string) + **out = **in + } + if in.TenantID != nil { + in, out := &in.TenantID, &out.TenantID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureArchiveParameters. +func (in *AzureArchiveParameters) DeepCopy() *AzureArchiveParameters { + if in == nil { + return nil + } + out := new(AzureArchiveParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryFilterInitParameters) DeepCopyInto(out *CategoryFilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryFilterInitParameters. +func (in *CategoryFilterInitParameters) DeepCopy() *CategoryFilterInitParameters { + if in == nil { + return nil + } + out := new(CategoryFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryFilterObservation) DeepCopyInto(out *CategoryFilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryFilterObservation. +func (in *CategoryFilterObservation) DeepCopy() *CategoryFilterObservation { + if in == nil { + return nil + } + out := new(CategoryFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryFilterParameters) DeepCopyInto(out *CategoryFilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryFilterParameters. +func (in *CategoryFilterParameters) DeepCopy() *CategoryFilterParameters { + if in == nil { + return nil + } + out := new(CategoryFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryInitParameters) DeepCopyInto(out *CategoryInitParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]CategoryFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryInitParameters. +func (in *CategoryInitParameters) DeepCopy() *CategoryInitParameters { + if in == nil { + return nil + } + out := new(CategoryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryObservation) DeepCopyInto(out *CategoryObservation) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]CategoryFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryObservation. +func (in *CategoryObservation) DeepCopy() *CategoryObservation { + if in == nil { + return nil + } + out := new(CategoryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryParameters) DeepCopyInto(out *CategoryParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]CategoryFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryParameters. +func (in *CategoryParameters) DeepCopy() *CategoryParameters { + if in == nil { + return nil + } + out := new(CategoryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorCategoryFilterInitParameters) DeepCopyInto(out *CategoryProcessorCategoryFilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorCategoryFilterInitParameters. +func (in *CategoryProcessorCategoryFilterInitParameters) DeepCopy() *CategoryProcessorCategoryFilterInitParameters { + if in == nil { + return nil + } + out := new(CategoryProcessorCategoryFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorCategoryFilterObservation) DeepCopyInto(out *CategoryProcessorCategoryFilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorCategoryFilterObservation. +func (in *CategoryProcessorCategoryFilterObservation) DeepCopy() *CategoryProcessorCategoryFilterObservation { + if in == nil { + return nil + } + out := new(CategoryProcessorCategoryFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorCategoryFilterParameters) DeepCopyInto(out *CategoryProcessorCategoryFilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorCategoryFilterParameters. +func (in *CategoryProcessorCategoryFilterParameters) DeepCopy() *CategoryProcessorCategoryFilterParameters { + if in == nil { + return nil + } + out := new(CategoryProcessorCategoryFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorCategoryInitParameters) DeepCopyInto(out *CategoryProcessorCategoryInitParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]CategoryProcessorCategoryFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorCategoryInitParameters. +func (in *CategoryProcessorCategoryInitParameters) DeepCopy() *CategoryProcessorCategoryInitParameters { + if in == nil { + return nil + } + out := new(CategoryProcessorCategoryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorCategoryObservation) DeepCopyInto(out *CategoryProcessorCategoryObservation) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]CategoryProcessorCategoryFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorCategoryObservation. +func (in *CategoryProcessorCategoryObservation) DeepCopy() *CategoryProcessorCategoryObservation { + if in == nil { + return nil + } + out := new(CategoryProcessorCategoryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorCategoryParameters) DeepCopyInto(out *CategoryProcessorCategoryParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]CategoryProcessorCategoryFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorCategoryParameters. +func (in *CategoryProcessorCategoryParameters) DeepCopy() *CategoryProcessorCategoryParameters { + if in == nil { + return nil + } + out := new(CategoryProcessorCategoryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorInitParameters) DeepCopyInto(out *CategoryProcessorInitParameters) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = make([]CategoryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorInitParameters. +func (in *CategoryProcessorInitParameters) DeepCopy() *CategoryProcessorInitParameters { + if in == nil { + return nil + } + out := new(CategoryProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorObservation) DeepCopyInto(out *CategoryProcessorObservation) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = make([]CategoryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorObservation. +func (in *CategoryProcessorObservation) DeepCopy() *CategoryProcessorObservation { + if in == nil { + return nil + } + out := new(CategoryProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CategoryProcessorParameters) DeepCopyInto(out *CategoryProcessorParameters) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = make([]CategoryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CategoryProcessorParameters. +func (in *CategoryProcessorParameters) DeepCopy() *CategoryProcessorParameters { + if in == nil { + return nil + } + out := new(CategoryProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputeInitParameters) DeepCopyInto(out *ComputeInitParameters) { + *out = *in + if in.AggregationType != nil { + in, out := &in.AggregationType, &out.AggregationType + *out = new(string) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputeInitParameters. +func (in *ComputeInitParameters) DeepCopy() *ComputeInitParameters { + if in == nil { + return nil + } + out := new(ComputeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputeObservation) DeepCopyInto(out *ComputeObservation) { + *out = *in + if in.AggregationType != nil { + in, out := &in.AggregationType, &out.AggregationType + *out = new(string) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputeObservation. +func (in *ComputeObservation) DeepCopy() *ComputeObservation { + if in == nil { + return nil + } + out := new(ComputeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputeParameters) DeepCopyInto(out *ComputeParameters) { + *out = *in + if in.AggregationType != nil { + in, out := &in.AggregationType, &out.AggregationType + *out = new(string) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputeParameters. +func (in *ComputeParameters) DeepCopy() *ComputeParameters { + if in == nil { + return nil + } + out := new(ComputeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPipeline) DeepCopyInto(out *CustomPipeline) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipeline. +func (in *CustomPipeline) DeepCopy() *CustomPipeline { + if in == nil { + return nil + } + out := new(CustomPipeline) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomPipeline) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPipelineInitParameters) DeepCopyInto(out *CustomPipelineInitParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Processor != nil { + in, out := &in.Processor, &out.Processor + *out = make([]ProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineInitParameters. +func (in *CustomPipelineInitParameters) DeepCopy() *CustomPipelineInitParameters { + if in == nil { + return nil + } + out := new(CustomPipelineInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPipelineList) DeepCopyInto(out *CustomPipelineList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomPipeline, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineList. +func (in *CustomPipelineList) DeepCopy() *CustomPipelineList { + if in == nil { + return nil + } + out := new(CustomPipelineList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomPipelineList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPipelineObservation) DeepCopyInto(out *CustomPipelineObservation) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Processor != nil { + in, out := &in.Processor, &out.Processor + *out = make([]ProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineObservation. +func (in *CustomPipelineObservation) DeepCopy() *CustomPipelineObservation { + if in == nil { + return nil + } + out := new(CustomPipelineObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPipelineParameters) DeepCopyInto(out *CustomPipelineParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Processor != nil { + in, out := &in.Processor, &out.Processor + *out = make([]ProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineParameters. +func (in *CustomPipelineParameters) DeepCopy() *CustomPipelineParameters { + if in == nil { + return nil + } + out := new(CustomPipelineParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPipelineSpec) DeepCopyInto(out *CustomPipelineSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineSpec. +func (in *CustomPipelineSpec) DeepCopy() *CustomPipelineSpec { + if in == nil { + return nil + } + out := new(CustomPipelineSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomPipelineStatus) DeepCopyInto(out *CustomPipelineStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineStatus. +func (in *CustomPipelineStatus) DeepCopy() *CustomPipelineStatus { + if in == nil { + return nil + } + out := new(CustomPipelineStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DailyLimitResetInitParameters) DeepCopyInto(out *DailyLimitResetInitParameters) { + *out = *in + if in.ResetTime != nil { + in, out := &in.ResetTime, &out.ResetTime + *out = new(string) + **out = **in + } + if in.ResetUtcOffset != nil { + in, out := &in.ResetUtcOffset, &out.ResetUtcOffset + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DailyLimitResetInitParameters. +func (in *DailyLimitResetInitParameters) DeepCopy() *DailyLimitResetInitParameters { + if in == nil { + return nil + } + out := new(DailyLimitResetInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DailyLimitResetObservation) DeepCopyInto(out *DailyLimitResetObservation) { + *out = *in + if in.ResetTime != nil { + in, out := &in.ResetTime, &out.ResetTime + *out = new(string) + **out = **in + } + if in.ResetUtcOffset != nil { + in, out := &in.ResetUtcOffset, &out.ResetUtcOffset + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DailyLimitResetObservation. +func (in *DailyLimitResetObservation) DeepCopy() *DailyLimitResetObservation { + if in == nil { + return nil + } + out := new(DailyLimitResetObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DailyLimitResetParameters) DeepCopyInto(out *DailyLimitResetParameters) { + *out = *in + if in.ResetTime != nil { + in, out := &in.ResetTime, &out.ResetTime + *out = new(string) + **out = **in + } + if in.ResetUtcOffset != nil { + in, out := &in.ResetUtcOffset, &out.ResetUtcOffset + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DailyLimitResetParameters. +func (in *DailyLimitResetParameters) DeepCopy() *DailyLimitResetParameters { + if in == nil { + return nil + } + out := new(DailyLimitResetParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DateRemapperInitParameters) DeepCopyInto(out *DateRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DateRemapperInitParameters. +func (in *DateRemapperInitParameters) DeepCopy() *DateRemapperInitParameters { + if in == nil { + return nil + } + out := new(DateRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DateRemapperObservation) DeepCopyInto(out *DateRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DateRemapperObservation. +func (in *DateRemapperObservation) DeepCopy() *DateRemapperObservation { + if in == nil { + return nil + } + out := new(DateRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DateRemapperParameters) DeepCopyInto(out *DateRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DateRemapperParameters. +func (in *DateRemapperParameters) DeepCopy() *DateRemapperParameters { + if in == nil { + return nil + } + out := new(DateRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterFilterInitParameters) DeepCopyInto(out *ExclusionFilterFilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.SampleRate != nil { + in, out := &in.SampleRate, &out.SampleRate + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterFilterInitParameters. +func (in *ExclusionFilterFilterInitParameters) DeepCopy() *ExclusionFilterFilterInitParameters { + if in == nil { + return nil + } + out := new(ExclusionFilterFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterFilterObservation) DeepCopyInto(out *ExclusionFilterFilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.SampleRate != nil { + in, out := &in.SampleRate, &out.SampleRate + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterFilterObservation. +func (in *ExclusionFilterFilterObservation) DeepCopy() *ExclusionFilterFilterObservation { + if in == nil { + return nil + } + out := new(ExclusionFilterFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterFilterParameters) DeepCopyInto(out *ExclusionFilterFilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.SampleRate != nil { + in, out := &in.SampleRate, &out.SampleRate + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterFilterParameters. +func (in *ExclusionFilterFilterParameters) DeepCopy() *ExclusionFilterFilterParameters { + if in == nil { + return nil + } + out := new(ExclusionFilterFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterInitParameters) DeepCopyInto(out *ExclusionFilterInitParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]ExclusionFilterFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterInitParameters. +func (in *ExclusionFilterInitParameters) DeepCopy() *ExclusionFilterInitParameters { + if in == nil { + return nil + } + out := new(ExclusionFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterObservation) DeepCopyInto(out *ExclusionFilterObservation) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]ExclusionFilterFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterObservation. +func (in *ExclusionFilterObservation) DeepCopy() *ExclusionFilterObservation { + if in == nil { + return nil + } + out := new(ExclusionFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterParameters) DeepCopyInto(out *ExclusionFilterParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]ExclusionFilterFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterParameters. +func (in *ExclusionFilterParameters) DeepCopy() *ExclusionFilterParameters { + if in == nil { + return nil + } + out := new(ExclusionFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters) DeepCopyInto(out *FilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters. +func (in *FilterInitParameters) DeepCopy() *FilterInitParameters { + if in == nil { + return nil + } + out := new(FilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation) DeepCopyInto(out *FilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation. +func (in *FilterObservation) DeepCopy() *FilterObservation { + if in == nil { + return nil + } + out := new(FilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters) DeepCopyInto(out *FilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters. +func (in *FilterParameters) DeepCopy() *FilterParameters { + if in == nil { + return nil + } + out := new(FilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcsArchiveInitParameters) DeepCopyInto(out *GcsArchiveInitParameters) { + *out = *in + if in.Bucket != nil { + in, out := &in.Bucket, &out.Bucket + *out = new(string) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcsArchiveInitParameters. +func (in *GcsArchiveInitParameters) DeepCopy() *GcsArchiveInitParameters { + if in == nil { + return nil + } + out := new(GcsArchiveInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcsArchiveObservation) DeepCopyInto(out *GcsArchiveObservation) { + *out = *in + if in.Bucket != nil { + in, out := &in.Bucket, &out.Bucket + *out = new(string) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcsArchiveObservation. +func (in *GcsArchiveObservation) DeepCopy() *GcsArchiveObservation { + if in == nil { + return nil + } + out := new(GcsArchiveObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GcsArchiveParameters) DeepCopyInto(out *GcsArchiveParameters) { + *out = *in + if in.Bucket != nil { + in, out := &in.Bucket, &out.Bucket + *out = new(string) + **out = **in + } + if in.ClientEmail != nil { + in, out := &in.ClientEmail, &out.ClientEmail + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcsArchiveParameters. +func (in *GcsArchiveParameters) DeepCopy() *GcsArchiveParameters { + if in == nil { + return nil + } + out := new(GcsArchiveParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GeoIPParserInitParameters) DeepCopyInto(out *GeoIPParserInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoIPParserInitParameters. +func (in *GeoIPParserInitParameters) DeepCopy() *GeoIPParserInitParameters { + if in == nil { + return nil + } + out := new(GeoIPParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GeoIPParserObservation) DeepCopyInto(out *GeoIPParserObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoIPParserObservation. +func (in *GeoIPParserObservation) DeepCopy() *GeoIPParserObservation { + if in == nil { + return nil + } + out := new(GeoIPParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GeoIPParserParameters) DeepCopyInto(out *GeoIPParserParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoIPParserParameters. +func (in *GeoIPParserParameters) DeepCopy() *GeoIPParserParameters { + if in == nil { + return nil + } + out := new(GeoIPParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokInitParameters) DeepCopyInto(out *GrokInitParameters) { + *out = *in + if in.MatchRules != nil { + in, out := &in.MatchRules, &out.MatchRules + *out = new(string) + **out = **in + } + if in.SupportRules != nil { + in, out := &in.SupportRules, &out.SupportRules + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokInitParameters. +func (in *GrokInitParameters) DeepCopy() *GrokInitParameters { + if in == nil { + return nil + } + out := new(GrokInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokObservation) DeepCopyInto(out *GrokObservation) { + *out = *in + if in.MatchRules != nil { + in, out := &in.MatchRules, &out.MatchRules + *out = new(string) + **out = **in + } + if in.SupportRules != nil { + in, out := &in.SupportRules, &out.SupportRules + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokObservation. +func (in *GrokObservation) DeepCopy() *GrokObservation { + if in == nil { + return nil + } + out := new(GrokObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokParameters) DeepCopyInto(out *GrokParameters) { + *out = *in + if in.MatchRules != nil { + in, out := &in.MatchRules, &out.MatchRules + *out = new(string) + **out = **in + } + if in.SupportRules != nil { + in, out := &in.SupportRules, &out.SupportRules + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokParameters. +func (in *GrokParameters) DeepCopy() *GrokParameters { + if in == nil { + return nil + } + out := new(GrokParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokParserGrokInitParameters) DeepCopyInto(out *GrokParserGrokInitParameters) { + *out = *in + if in.MatchRules != nil { + in, out := &in.MatchRules, &out.MatchRules + *out = new(string) + **out = **in + } + if in.SupportRules != nil { + in, out := &in.SupportRules, &out.SupportRules + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokParserGrokInitParameters. +func (in *GrokParserGrokInitParameters) DeepCopy() *GrokParserGrokInitParameters { + if in == nil { + return nil + } + out := new(GrokParserGrokInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokParserGrokObservation) DeepCopyInto(out *GrokParserGrokObservation) { + *out = *in + if in.MatchRules != nil { + in, out := &in.MatchRules, &out.MatchRules + *out = new(string) + **out = **in + } + if in.SupportRules != nil { + in, out := &in.SupportRules, &out.SupportRules + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokParserGrokObservation. +func (in *GrokParserGrokObservation) DeepCopy() *GrokParserGrokObservation { + if in == nil { + return nil + } + out := new(GrokParserGrokObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokParserGrokParameters) DeepCopyInto(out *GrokParserGrokParameters) { + *out = *in + if in.MatchRules != nil { + in, out := &in.MatchRules, &out.MatchRules + *out = new(string) + **out = **in + } + if in.SupportRules != nil { + in, out := &in.SupportRules, &out.SupportRules + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokParserGrokParameters. +func (in *GrokParserGrokParameters) DeepCopy() *GrokParserGrokParameters { + if in == nil { + return nil + } + out := new(GrokParserGrokParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokParserInitParameters) DeepCopyInto(out *GrokParserInitParameters) { + *out = *in + if in.Grok != nil { + in, out := &in.Grok, &out.Grok + *out = make([]GrokInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Samples != nil { + in, out := &in.Samples, &out.Samples + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokParserInitParameters. +func (in *GrokParserInitParameters) DeepCopy() *GrokParserInitParameters { + if in == nil { + return nil + } + out := new(GrokParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokParserObservation) DeepCopyInto(out *GrokParserObservation) { + *out = *in + if in.Grok != nil { + in, out := &in.Grok, &out.Grok + *out = make([]GrokObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Samples != nil { + in, out := &in.Samples, &out.Samples + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokParserObservation. +func (in *GrokParserObservation) DeepCopy() *GrokParserObservation { + if in == nil { + return nil + } + out := new(GrokParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GrokParserParameters) DeepCopyInto(out *GrokParserParameters) { + *out = *in + if in.Grok != nil { + in, out := &in.Grok, &out.Grok + *out = make([]GrokParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Samples != nil { + in, out := &in.Samples, &out.Samples + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrokParserParameters. +func (in *GrokParserParameters) DeepCopy() *GrokParserParameters { + if in == nil { + return nil + } + out := new(GrokParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupByInitParameters) DeepCopyInto(out *GroupByInitParameters) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.TagName != nil { + in, out := &in.TagName, &out.TagName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupByInitParameters. +func (in *GroupByInitParameters) DeepCopy() *GroupByInitParameters { + if in == nil { + return nil + } + out := new(GroupByInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupByObservation) DeepCopyInto(out *GroupByObservation) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.TagName != nil { + in, out := &in.TagName, &out.TagName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupByObservation. +func (in *GroupByObservation) DeepCopy() *GroupByObservation { + if in == nil { + return nil + } + out := new(GroupByObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupByParameters) DeepCopyInto(out *GroupByParameters) { + *out = *in + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.TagName != nil { + in, out := &in.TagName, &out.TagName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupByParameters. +func (in *GroupByParameters) DeepCopy() *GroupByParameters { + if in == nil { + return nil + } + out := new(GroupByParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Index) DeepCopyInto(out *Index) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Index. +func (in *Index) DeepCopy() *Index { + if in == nil { + return nil + } + out := new(Index) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Index) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexFilterInitParameters) DeepCopyInto(out *IndexFilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexFilterInitParameters. +func (in *IndexFilterInitParameters) DeepCopy() *IndexFilterInitParameters { + if in == nil { + return nil + } + out := new(IndexFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexFilterObservation) DeepCopyInto(out *IndexFilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexFilterObservation. +func (in *IndexFilterObservation) DeepCopy() *IndexFilterObservation { + if in == nil { + return nil + } + out := new(IndexFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexFilterParameters) DeepCopyInto(out *IndexFilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexFilterParameters. +func (in *IndexFilterParameters) DeepCopy() *IndexFilterParameters { + if in == nil { + return nil + } + out := new(IndexFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexInitParameters) DeepCopyInto(out *IndexInitParameters) { + *out = *in + if in.DailyLimit != nil { + in, out := &in.DailyLimit, &out.DailyLimit + *out = new(float64) + **out = **in + } + if in.DailyLimitReset != nil { + in, out := &in.DailyLimitReset, &out.DailyLimitReset + *out = make([]DailyLimitResetInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DailyLimitWarningThresholdPercentage != nil { + in, out := &in.DailyLimitWarningThresholdPercentage, &out.DailyLimitWarningThresholdPercentage + *out = new(float64) + **out = **in + } + if in.DisableDailyLimit != nil { + in, out := &in.DisableDailyLimit, &out.DisableDailyLimit + *out = new(bool) + **out = **in + } + if in.ExclusionFilter != nil { + in, out := &in.ExclusionFilter, &out.ExclusionFilter + *out = make([]ExclusionFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]IndexFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.RetentionDays != nil { + in, out := &in.RetentionDays, &out.RetentionDays + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexInitParameters. +func (in *IndexInitParameters) DeepCopy() *IndexInitParameters { + if in == nil { + return nil + } + out := new(IndexInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexList) DeepCopyInto(out *IndexList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Index, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexList. +func (in *IndexList) DeepCopy() *IndexList { + if in == nil { + return nil + } + out := new(IndexList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IndexList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexObservation) DeepCopyInto(out *IndexObservation) { + *out = *in + if in.DailyLimit != nil { + in, out := &in.DailyLimit, &out.DailyLimit + *out = new(float64) + **out = **in + } + if in.DailyLimitReset != nil { + in, out := &in.DailyLimitReset, &out.DailyLimitReset + *out = make([]DailyLimitResetObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DailyLimitWarningThresholdPercentage != nil { + in, out := &in.DailyLimitWarningThresholdPercentage, &out.DailyLimitWarningThresholdPercentage + *out = new(float64) + **out = **in + } + if in.DisableDailyLimit != nil { + in, out := &in.DisableDailyLimit, &out.DisableDailyLimit + *out = new(bool) + **out = **in + } + if in.ExclusionFilter != nil { + in, out := &in.ExclusionFilter, &out.ExclusionFilter + *out = make([]ExclusionFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]IndexFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.RetentionDays != nil { + in, out := &in.RetentionDays, &out.RetentionDays + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexObservation. +func (in *IndexObservation) DeepCopy() *IndexObservation { + if in == nil { + return nil + } + out := new(IndexObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexOrder) DeepCopyInto(out *IndexOrder) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOrder. +func (in *IndexOrder) DeepCopy() *IndexOrder { + if in == nil { + return nil + } + out := new(IndexOrder) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IndexOrder) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexOrderInitParameters) DeepCopyInto(out *IndexOrderInitParameters) { + *out = *in + if in.Indexes != nil { + in, out := &in.Indexes, &out.Indexes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOrderInitParameters. +func (in *IndexOrderInitParameters) DeepCopy() *IndexOrderInitParameters { + if in == nil { + return nil + } + out := new(IndexOrderInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexOrderList) DeepCopyInto(out *IndexOrderList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IndexOrder, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOrderList. +func (in *IndexOrderList) DeepCopy() *IndexOrderList { + if in == nil { + return nil + } + out := new(IndexOrderList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IndexOrderList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexOrderObservation) DeepCopyInto(out *IndexOrderObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Indexes != nil { + in, out := &in.Indexes, &out.Indexes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOrderObservation. +func (in *IndexOrderObservation) DeepCopy() *IndexOrderObservation { + if in == nil { + return nil + } + out := new(IndexOrderObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexOrderParameters) DeepCopyInto(out *IndexOrderParameters) { + *out = *in + if in.Indexes != nil { + in, out := &in.Indexes, &out.Indexes + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOrderParameters. +func (in *IndexOrderParameters) DeepCopy() *IndexOrderParameters { + if in == nil { + return nil + } + out := new(IndexOrderParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexOrderSpec) DeepCopyInto(out *IndexOrderSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOrderSpec. +func (in *IndexOrderSpec) DeepCopy() *IndexOrderSpec { + if in == nil { + return nil + } + out := new(IndexOrderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexOrderStatus) DeepCopyInto(out *IndexOrderStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOrderStatus. +func (in *IndexOrderStatus) DeepCopy() *IndexOrderStatus { + if in == nil { + return nil + } + out := new(IndexOrderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexParameters) DeepCopyInto(out *IndexParameters) { + *out = *in + if in.DailyLimit != nil { + in, out := &in.DailyLimit, &out.DailyLimit + *out = new(float64) + **out = **in + } + if in.DailyLimitReset != nil { + in, out := &in.DailyLimitReset, &out.DailyLimitReset + *out = make([]DailyLimitResetParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DailyLimitWarningThresholdPercentage != nil { + in, out := &in.DailyLimitWarningThresholdPercentage, &out.DailyLimitWarningThresholdPercentage + *out = new(float64) + **out = **in + } + if in.DisableDailyLimit != nil { + in, out := &in.DisableDailyLimit, &out.DisableDailyLimit + *out = new(bool) + **out = **in + } + if in.ExclusionFilter != nil { + in, out := &in.ExclusionFilter, &out.ExclusionFilter + *out = make([]ExclusionFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]IndexFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.RetentionDays != nil { + in, out := &in.RetentionDays, &out.RetentionDays + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexParameters. +func (in *IndexParameters) DeepCopy() *IndexParameters { + if in == nil { + return nil + } + out := new(IndexParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexSpec) DeepCopyInto(out *IndexSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexSpec. +func (in *IndexSpec) DeepCopy() *IndexSpec { + if in == nil { + return nil + } + out := new(IndexSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexStatus) DeepCopyInto(out *IndexStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexStatus. +func (in *IndexStatus) DeepCopy() *IndexStatus { + if in == nil { + return nil + } + out := new(IndexStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IntegrationPipeline) DeepCopyInto(out *IntegrationPipeline) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPipeline. +func (in *IntegrationPipeline) DeepCopy() *IntegrationPipeline { + if in == nil { + return nil + } + out := new(IntegrationPipeline) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IntegrationPipeline) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IntegrationPipelineInitParameters) DeepCopyInto(out *IntegrationPipelineInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPipelineInitParameters. +func (in *IntegrationPipelineInitParameters) DeepCopy() *IntegrationPipelineInitParameters { + if in == nil { + return nil + } + out := new(IntegrationPipelineInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IntegrationPipelineList) DeepCopyInto(out *IntegrationPipelineList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]IntegrationPipeline, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPipelineList. +func (in *IntegrationPipelineList) DeepCopy() *IntegrationPipelineList { + if in == nil { + return nil + } + out := new(IntegrationPipelineList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IntegrationPipelineList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IntegrationPipelineObservation) DeepCopyInto(out *IntegrationPipelineObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPipelineObservation. +func (in *IntegrationPipelineObservation) DeepCopy() *IntegrationPipelineObservation { + if in == nil { + return nil + } + out := new(IntegrationPipelineObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IntegrationPipelineParameters) DeepCopyInto(out *IntegrationPipelineParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPipelineParameters. +func (in *IntegrationPipelineParameters) DeepCopy() *IntegrationPipelineParameters { + if in == nil { + return nil + } + out := new(IntegrationPipelineParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IntegrationPipelineSpec) DeepCopyInto(out *IntegrationPipelineSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPipelineSpec. +func (in *IntegrationPipelineSpec) DeepCopy() *IntegrationPipelineSpec { + if in == nil { + return nil + } + out := new(IntegrationPipelineSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IntegrationPipelineStatus) DeepCopyInto(out *IntegrationPipelineStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPipelineStatus. +func (in *IntegrationPipelineStatus) DeepCopy() *IntegrationPipelineStatus { + if in == nil { + return nil + } + out := new(IntegrationPipelineStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LookupProcessorInitParameters) DeepCopyInto(out *LookupProcessorInitParameters) { + *out = *in + if in.DefaultLookup != nil { + in, out := &in.DefaultLookup, &out.DefaultLookup + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupTable != nil { + in, out := &in.LookupTable, &out.LookupTable + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LookupProcessorInitParameters. +func (in *LookupProcessorInitParameters) DeepCopy() *LookupProcessorInitParameters { + if in == nil { + return nil + } + out := new(LookupProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LookupProcessorObservation) DeepCopyInto(out *LookupProcessorObservation) { + *out = *in + if in.DefaultLookup != nil { + in, out := &in.DefaultLookup, &out.DefaultLookup + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupTable != nil { + in, out := &in.LookupTable, &out.LookupTable + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LookupProcessorObservation. +func (in *LookupProcessorObservation) DeepCopy() *LookupProcessorObservation { + if in == nil { + return nil + } + out := new(LookupProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LookupProcessorParameters) DeepCopyInto(out *LookupProcessorParameters) { + *out = *in + if in.DefaultLookup != nil { + in, out := &in.DefaultLookup, &out.DefaultLookup + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupTable != nil { + in, out := &in.LookupTable, &out.LookupTable + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LookupProcessorParameters. +func (in *LookupProcessorParameters) DeepCopy() *LookupProcessorParameters { + if in == nil { + return nil + } + out := new(LookupProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MessageRemapperInitParameters) DeepCopyInto(out *MessageRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MessageRemapperInitParameters. +func (in *MessageRemapperInitParameters) DeepCopy() *MessageRemapperInitParameters { + if in == nil { + return nil + } + out := new(MessageRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MessageRemapperObservation) DeepCopyInto(out *MessageRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MessageRemapperObservation. +func (in *MessageRemapperObservation) DeepCopy() *MessageRemapperObservation { + if in == nil { + return nil + } + out := new(MessageRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MessageRemapperParameters) DeepCopyInto(out *MessageRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MessageRemapperParameters. +func (in *MessageRemapperParameters) DeepCopy() *MessageRemapperParameters { + if in == nil { + return nil + } + out := new(MessageRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Metric) DeepCopyInto(out *Metric) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metric. +func (in *Metric) DeepCopy() *Metric { + if in == nil { + return nil + } + out := new(Metric) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Metric) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricFilterInitParameters) DeepCopyInto(out *MetricFilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricFilterInitParameters. +func (in *MetricFilterInitParameters) DeepCopy() *MetricFilterInitParameters { + if in == nil { + return nil + } + out := new(MetricFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricFilterObservation) DeepCopyInto(out *MetricFilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricFilterObservation. +func (in *MetricFilterObservation) DeepCopy() *MetricFilterObservation { + if in == nil { + return nil + } + out := new(MetricFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricFilterParameters) DeepCopyInto(out *MetricFilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricFilterParameters. +func (in *MetricFilterParameters) DeepCopy() *MetricFilterParameters { + if in == nil { + return nil + } + out := new(MetricFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricInitParameters) DeepCopyInto(out *MetricInitParameters) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = make([]ComputeInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]MetricFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]GroupByInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricInitParameters. +func (in *MetricInitParameters) DeepCopy() *MetricInitParameters { + if in == nil { + return nil + } + out := new(MetricInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricList) DeepCopyInto(out *MetricList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Metric, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricList. +func (in *MetricList) DeepCopy() *MetricList { + if in == nil { + return nil + } + out := new(MetricList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MetricList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricObservation) DeepCopyInto(out *MetricObservation) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = make([]ComputeObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]MetricFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]GroupByObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricObservation. +func (in *MetricObservation) DeepCopy() *MetricObservation { + if in == nil { + return nil + } + out := new(MetricObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricParameters) DeepCopyInto(out *MetricParameters) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = make([]ComputeParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]MetricFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GroupBy != nil { + in, out := &in.GroupBy, &out.GroupBy + *out = make([]GroupByParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricParameters. +func (in *MetricParameters) DeepCopy() *MetricParameters { + if in == nil { + return nil + } + out := new(MetricParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricSpec. +func (in *MetricSpec) DeepCopy() *MetricSpec { + if in == nil { + return nil + } + out := new(MetricSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricStatus. +func (in *MetricStatus) DeepCopy() *MetricStatus { + if in == nil { + return nil + } + out := new(MetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineFilterInitParameters) DeepCopyInto(out *PipelineFilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineFilterInitParameters. +func (in *PipelineFilterInitParameters) DeepCopy() *PipelineFilterInitParameters { + if in == nil { + return nil + } + out := new(PipelineFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineFilterObservation) DeepCopyInto(out *PipelineFilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineFilterObservation. +func (in *PipelineFilterObservation) DeepCopy() *PipelineFilterObservation { + if in == nil { + return nil + } + out := new(PipelineFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineFilterParameters) DeepCopyInto(out *PipelineFilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineFilterParameters. +func (in *PipelineFilterParameters) DeepCopy() *PipelineFilterParameters { + if in == nil { + return nil + } + out := new(PipelineFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineInitParameters) DeepCopyInto(out *PipelineInitParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]PipelineFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Processor != nil { + in, out := &in.Processor, &out.Processor + *out = make([]PipelineProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineInitParameters. +func (in *PipelineInitParameters) DeepCopy() *PipelineInitParameters { + if in == nil { + return nil + } + out := new(PipelineInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineObservation) DeepCopyInto(out *PipelineObservation) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]PipelineFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Processor != nil { + in, out := &in.Processor, &out.Processor + *out = make([]PipelineProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineObservation. +func (in *PipelineObservation) DeepCopy() *PipelineObservation { + if in == nil { + return nil + } + out := new(PipelineObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineOrder) DeepCopyInto(out *PipelineOrder) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineOrder. +func (in *PipelineOrder) DeepCopy() *PipelineOrder { + if in == nil { + return nil + } + out := new(PipelineOrder) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PipelineOrder) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineOrderInitParameters) DeepCopyInto(out *PipelineOrderInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Pipelines != nil { + in, out := &in.Pipelines, &out.Pipelines + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineOrderInitParameters. +func (in *PipelineOrderInitParameters) DeepCopy() *PipelineOrderInitParameters { + if in == nil { + return nil + } + out := new(PipelineOrderInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineOrderList) DeepCopyInto(out *PipelineOrderList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PipelineOrder, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineOrderList. +func (in *PipelineOrderList) DeepCopy() *PipelineOrderList { + if in == nil { + return nil + } + out := new(PipelineOrderList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PipelineOrderList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineOrderObservation) DeepCopyInto(out *PipelineOrderObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Pipelines != nil { + in, out := &in.Pipelines, &out.Pipelines + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineOrderObservation. +func (in *PipelineOrderObservation) DeepCopy() *PipelineOrderObservation { + if in == nil { + return nil + } + out := new(PipelineOrderObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineOrderParameters) DeepCopyInto(out *PipelineOrderParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Pipelines != nil { + in, out := &in.Pipelines, &out.Pipelines + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineOrderParameters. +func (in *PipelineOrderParameters) DeepCopy() *PipelineOrderParameters { + if in == nil { + return nil + } + out := new(PipelineOrderParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineOrderSpec) DeepCopyInto(out *PipelineOrderSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineOrderSpec. +func (in *PipelineOrderSpec) DeepCopy() *PipelineOrderSpec { + if in == nil { + return nil + } + out := new(PipelineOrderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineOrderStatus) DeepCopyInto(out *PipelineOrderStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineOrderStatus. +func (in *PipelineOrderStatus) DeepCopy() *PipelineOrderStatus { + if in == nil { + return nil + } + out := new(PipelineOrderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineParameters) DeepCopyInto(out *PipelineParameters) { + *out = *in + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]PipelineFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Processor != nil { + in, out := &in.Processor, &out.Processor + *out = make([]PipelineProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineParameters. +func (in *PipelineParameters) DeepCopy() *PipelineParameters { + if in == nil { + return nil + } + out := new(PipelineParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineProcessorInitParameters) DeepCopyInto(out *PipelineProcessorInitParameters) { + *out = *in + if in.ArithmeticProcessor != nil { + in, out := &in.ArithmeticProcessor, &out.ArithmeticProcessor + *out = make([]ProcessorArithmeticProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AttributeRemapper != nil { + in, out := &in.AttributeRemapper, &out.AttributeRemapper + *out = make([]ProcessorAttributeRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CategoryProcessor != nil { + in, out := &in.CategoryProcessor, &out.CategoryProcessor + *out = make([]ProcessorCategoryProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DateRemapper != nil { + in, out := &in.DateRemapper, &out.DateRemapper + *out = make([]ProcessorDateRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GeoIPParser != nil { + in, out := &in.GeoIPParser, &out.GeoIPParser + *out = make([]ProcessorGeoIPParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GrokParser != nil { + in, out := &in.GrokParser, &out.GrokParser + *out = make([]ProcessorGrokParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LookupProcessor != nil { + in, out := &in.LookupProcessor, &out.LookupProcessor + *out = make([]ProcessorLookupProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MessageRemapper != nil { + in, out := &in.MessageRemapper, &out.MessageRemapper + *out = make([]ProcessorMessageRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReferenceTableLookupProcessor != nil { + in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor + *out = make([]ReferenceTableLookupProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceRemapper != nil { + in, out := &in.ServiceRemapper, &out.ServiceRemapper + *out = make([]ServiceRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatusRemapper != nil { + in, out := &in.StatusRemapper, &out.StatusRemapper + *out = make([]StatusRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StringBuilderProcessor != nil { + in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor + *out = make([]StringBuilderProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TraceIDRemapper != nil { + in, out := &in.TraceIDRemapper, &out.TraceIDRemapper + *out = make([]TraceIDRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URLParser != nil { + in, out := &in.URLParser, &out.URLParser + *out = make([]URLParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserAgentParser != nil { + in, out := &in.UserAgentParser, &out.UserAgentParser + *out = make([]UserAgentParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineProcessorInitParameters. +func (in *PipelineProcessorInitParameters) DeepCopy() *PipelineProcessorInitParameters { + if in == nil { + return nil + } + out := new(PipelineProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineProcessorObservation) DeepCopyInto(out *PipelineProcessorObservation) { + *out = *in + if in.ArithmeticProcessor != nil { + in, out := &in.ArithmeticProcessor, &out.ArithmeticProcessor + *out = make([]ProcessorArithmeticProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AttributeRemapper != nil { + in, out := &in.AttributeRemapper, &out.AttributeRemapper + *out = make([]ProcessorAttributeRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CategoryProcessor != nil { + in, out := &in.CategoryProcessor, &out.CategoryProcessor + *out = make([]ProcessorCategoryProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DateRemapper != nil { + in, out := &in.DateRemapper, &out.DateRemapper + *out = make([]ProcessorDateRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GeoIPParser != nil { + in, out := &in.GeoIPParser, &out.GeoIPParser + *out = make([]ProcessorGeoIPParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GrokParser != nil { + in, out := &in.GrokParser, &out.GrokParser + *out = make([]ProcessorGrokParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LookupProcessor != nil { + in, out := &in.LookupProcessor, &out.LookupProcessor + *out = make([]ProcessorLookupProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MessageRemapper != nil { + in, out := &in.MessageRemapper, &out.MessageRemapper + *out = make([]ProcessorMessageRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReferenceTableLookupProcessor != nil { + in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor + *out = make([]ReferenceTableLookupProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceRemapper != nil { + in, out := &in.ServiceRemapper, &out.ServiceRemapper + *out = make([]ServiceRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatusRemapper != nil { + in, out := &in.StatusRemapper, &out.StatusRemapper + *out = make([]StatusRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StringBuilderProcessor != nil { + in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor + *out = make([]StringBuilderProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TraceIDRemapper != nil { + in, out := &in.TraceIDRemapper, &out.TraceIDRemapper + *out = make([]TraceIDRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URLParser != nil { + in, out := &in.URLParser, &out.URLParser + *out = make([]URLParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserAgentParser != nil { + in, out := &in.UserAgentParser, &out.UserAgentParser + *out = make([]UserAgentParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineProcessorObservation. +func (in *PipelineProcessorObservation) DeepCopy() *PipelineProcessorObservation { + if in == nil { + return nil + } + out := new(PipelineProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineProcessorParameters) DeepCopyInto(out *PipelineProcessorParameters) { + *out = *in + if in.ArithmeticProcessor != nil { + in, out := &in.ArithmeticProcessor, &out.ArithmeticProcessor + *out = make([]ProcessorArithmeticProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AttributeRemapper != nil { + in, out := &in.AttributeRemapper, &out.AttributeRemapper + *out = make([]ProcessorAttributeRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CategoryProcessor != nil { + in, out := &in.CategoryProcessor, &out.CategoryProcessor + *out = make([]ProcessorCategoryProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DateRemapper != nil { + in, out := &in.DateRemapper, &out.DateRemapper + *out = make([]ProcessorDateRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GeoIPParser != nil { + in, out := &in.GeoIPParser, &out.GeoIPParser + *out = make([]ProcessorGeoIPParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GrokParser != nil { + in, out := &in.GrokParser, &out.GrokParser + *out = make([]ProcessorGrokParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LookupProcessor != nil { + in, out := &in.LookupProcessor, &out.LookupProcessor + *out = make([]ProcessorLookupProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MessageRemapper != nil { + in, out := &in.MessageRemapper, &out.MessageRemapper + *out = make([]ProcessorMessageRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReferenceTableLookupProcessor != nil { + in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor + *out = make([]ReferenceTableLookupProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceRemapper != nil { + in, out := &in.ServiceRemapper, &out.ServiceRemapper + *out = make([]ServiceRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatusRemapper != nil { + in, out := &in.StatusRemapper, &out.StatusRemapper + *out = make([]StatusRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StringBuilderProcessor != nil { + in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor + *out = make([]StringBuilderProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TraceIDRemapper != nil { + in, out := &in.TraceIDRemapper, &out.TraceIDRemapper + *out = make([]TraceIDRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URLParser != nil { + in, out := &in.URLParser, &out.URLParser + *out = make([]URLParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserAgentParser != nil { + in, out := &in.UserAgentParser, &out.UserAgentParser + *out = make([]UserAgentParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineProcessorParameters. +func (in *PipelineProcessorParameters) DeepCopy() *PipelineProcessorParameters { + if in == nil { + return nil + } + out := new(PipelineProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorArithmeticProcessorInitParameters) DeepCopyInto(out *ProcessorArithmeticProcessorInitParameters) { + *out = *in + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorArithmeticProcessorInitParameters. +func (in *ProcessorArithmeticProcessorInitParameters) DeepCopy() *ProcessorArithmeticProcessorInitParameters { + if in == nil { + return nil + } + out := new(ProcessorArithmeticProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorArithmeticProcessorObservation) DeepCopyInto(out *ProcessorArithmeticProcessorObservation) { + *out = *in + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorArithmeticProcessorObservation. +func (in *ProcessorArithmeticProcessorObservation) DeepCopy() *ProcessorArithmeticProcessorObservation { + if in == nil { + return nil + } + out := new(ProcessorArithmeticProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorArithmeticProcessorParameters) DeepCopyInto(out *ProcessorArithmeticProcessorParameters) { + *out = *in + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorArithmeticProcessorParameters. +func (in *ProcessorArithmeticProcessorParameters) DeepCopy() *ProcessorArithmeticProcessorParameters { + if in == nil { + return nil + } + out := new(ProcessorArithmeticProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorAttributeRemapperInitParameters) DeepCopyInto(out *ProcessorAttributeRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OverrideOnConflict != nil { + in, out := &in.OverrideOnConflict, &out.OverrideOnConflict + *out = new(bool) + **out = **in + } + if in.PreserveSource != nil { + in, out := &in.PreserveSource, &out.PreserveSource + *out = new(bool) + **out = **in + } + if in.SourceType != nil { + in, out := &in.SourceType, &out.SourceType + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.TargetFormat != nil { + in, out := &in.TargetFormat, &out.TargetFormat + *out = new(string) + **out = **in + } + if in.TargetType != nil { + in, out := &in.TargetType, &out.TargetType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorAttributeRemapperInitParameters. +func (in *ProcessorAttributeRemapperInitParameters) DeepCopy() *ProcessorAttributeRemapperInitParameters { + if in == nil { + return nil + } + out := new(ProcessorAttributeRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorAttributeRemapperObservation) DeepCopyInto(out *ProcessorAttributeRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OverrideOnConflict != nil { + in, out := &in.OverrideOnConflict, &out.OverrideOnConflict + *out = new(bool) + **out = **in + } + if in.PreserveSource != nil { + in, out := &in.PreserveSource, &out.PreserveSource + *out = new(bool) + **out = **in + } + if in.SourceType != nil { + in, out := &in.SourceType, &out.SourceType + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.TargetFormat != nil { + in, out := &in.TargetFormat, &out.TargetFormat + *out = new(string) + **out = **in + } + if in.TargetType != nil { + in, out := &in.TargetType, &out.TargetType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorAttributeRemapperObservation. +func (in *ProcessorAttributeRemapperObservation) DeepCopy() *ProcessorAttributeRemapperObservation { + if in == nil { + return nil + } + out := new(ProcessorAttributeRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorAttributeRemapperParameters) DeepCopyInto(out *ProcessorAttributeRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OverrideOnConflict != nil { + in, out := &in.OverrideOnConflict, &out.OverrideOnConflict + *out = new(bool) + **out = **in + } + if in.PreserveSource != nil { + in, out := &in.PreserveSource, &out.PreserveSource + *out = new(bool) + **out = **in + } + if in.SourceType != nil { + in, out := &in.SourceType, &out.SourceType + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.TargetFormat != nil { + in, out := &in.TargetFormat, &out.TargetFormat + *out = new(string) + **out = **in + } + if in.TargetType != nil { + in, out := &in.TargetType, &out.TargetType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorAttributeRemapperParameters. +func (in *ProcessorAttributeRemapperParameters) DeepCopy() *ProcessorAttributeRemapperParameters { + if in == nil { + return nil + } + out := new(ProcessorAttributeRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorCategoryProcessorInitParameters) DeepCopyInto(out *ProcessorCategoryProcessorInitParameters) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = make([]CategoryProcessorCategoryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorCategoryProcessorInitParameters. +func (in *ProcessorCategoryProcessorInitParameters) DeepCopy() *ProcessorCategoryProcessorInitParameters { + if in == nil { + return nil + } + out := new(ProcessorCategoryProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorCategoryProcessorObservation) DeepCopyInto(out *ProcessorCategoryProcessorObservation) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = make([]CategoryProcessorCategoryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorCategoryProcessorObservation. +func (in *ProcessorCategoryProcessorObservation) DeepCopy() *ProcessorCategoryProcessorObservation { + if in == nil { + return nil + } + out := new(ProcessorCategoryProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorCategoryProcessorParameters) DeepCopyInto(out *ProcessorCategoryProcessorParameters) { + *out = *in + if in.Category != nil { + in, out := &in.Category, &out.Category + *out = make([]CategoryProcessorCategoryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorCategoryProcessorParameters. +func (in *ProcessorCategoryProcessorParameters) DeepCopy() *ProcessorCategoryProcessorParameters { + if in == nil { + return nil + } + out := new(ProcessorCategoryProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorDateRemapperInitParameters) DeepCopyInto(out *ProcessorDateRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorDateRemapperInitParameters. +func (in *ProcessorDateRemapperInitParameters) DeepCopy() *ProcessorDateRemapperInitParameters { + if in == nil { + return nil + } + out := new(ProcessorDateRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorDateRemapperObservation) DeepCopyInto(out *ProcessorDateRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorDateRemapperObservation. +func (in *ProcessorDateRemapperObservation) DeepCopy() *ProcessorDateRemapperObservation { + if in == nil { + return nil + } + out := new(ProcessorDateRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorDateRemapperParameters) DeepCopyInto(out *ProcessorDateRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorDateRemapperParameters. +func (in *ProcessorDateRemapperParameters) DeepCopy() *ProcessorDateRemapperParameters { + if in == nil { + return nil + } + out := new(ProcessorDateRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorGeoIPParserInitParameters) DeepCopyInto(out *ProcessorGeoIPParserInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorGeoIPParserInitParameters. +func (in *ProcessorGeoIPParserInitParameters) DeepCopy() *ProcessorGeoIPParserInitParameters { + if in == nil { + return nil + } + out := new(ProcessorGeoIPParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorGeoIPParserObservation) DeepCopyInto(out *ProcessorGeoIPParserObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorGeoIPParserObservation. +func (in *ProcessorGeoIPParserObservation) DeepCopy() *ProcessorGeoIPParserObservation { + if in == nil { + return nil + } + out := new(ProcessorGeoIPParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorGeoIPParserParameters) DeepCopyInto(out *ProcessorGeoIPParserParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorGeoIPParserParameters. +func (in *ProcessorGeoIPParserParameters) DeepCopy() *ProcessorGeoIPParserParameters { + if in == nil { + return nil + } + out := new(ProcessorGeoIPParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorGrokParserInitParameters) DeepCopyInto(out *ProcessorGrokParserInitParameters) { + *out = *in + if in.Grok != nil { + in, out := &in.Grok, &out.Grok + *out = make([]GrokParserGrokInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Samples != nil { + in, out := &in.Samples, &out.Samples + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorGrokParserInitParameters. +func (in *ProcessorGrokParserInitParameters) DeepCopy() *ProcessorGrokParserInitParameters { + if in == nil { + return nil + } + out := new(ProcessorGrokParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorGrokParserObservation) DeepCopyInto(out *ProcessorGrokParserObservation) { + *out = *in + if in.Grok != nil { + in, out := &in.Grok, &out.Grok + *out = make([]GrokParserGrokObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Samples != nil { + in, out := &in.Samples, &out.Samples + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorGrokParserObservation. +func (in *ProcessorGrokParserObservation) DeepCopy() *ProcessorGrokParserObservation { + if in == nil { + return nil + } + out := new(ProcessorGrokParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorGrokParserParameters) DeepCopyInto(out *ProcessorGrokParserParameters) { + *out = *in + if in.Grok != nil { + in, out := &in.Grok, &out.Grok + *out = make([]GrokParserGrokParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Samples != nil { + in, out := &in.Samples, &out.Samples + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorGrokParserParameters. +func (in *ProcessorGrokParserParameters) DeepCopy() *ProcessorGrokParserParameters { + if in == nil { + return nil + } + out := new(ProcessorGrokParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorInitParameters) DeepCopyInto(out *ProcessorInitParameters) { + *out = *in + if in.ArithmeticProcessor != nil { + in, out := &in.ArithmeticProcessor, &out.ArithmeticProcessor + *out = make([]ArithmeticProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AttributeRemapper != nil { + in, out := &in.AttributeRemapper, &out.AttributeRemapper + *out = make([]AttributeRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CategoryProcessor != nil { + in, out := &in.CategoryProcessor, &out.CategoryProcessor + *out = make([]CategoryProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DateRemapper != nil { + in, out := &in.DateRemapper, &out.DateRemapper + *out = make([]DateRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GeoIPParser != nil { + in, out := &in.GeoIPParser, &out.GeoIPParser + *out = make([]GeoIPParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GrokParser != nil { + in, out := &in.GrokParser, &out.GrokParser + *out = make([]GrokParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LookupProcessor != nil { + in, out := &in.LookupProcessor, &out.LookupProcessor + *out = make([]LookupProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MessageRemapper != nil { + in, out := &in.MessageRemapper, &out.MessageRemapper + *out = make([]MessageRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Pipeline != nil { + in, out := &in.Pipeline, &out.Pipeline + *out = make([]PipelineInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReferenceTableLookupProcessor != nil { + in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor + *out = make([]ProcessorReferenceTableLookupProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceRemapper != nil { + in, out := &in.ServiceRemapper, &out.ServiceRemapper + *out = make([]ProcessorServiceRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatusRemapper != nil { + in, out := &in.StatusRemapper, &out.StatusRemapper + *out = make([]ProcessorStatusRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StringBuilderProcessor != nil { + in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor + *out = make([]ProcessorStringBuilderProcessorInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TraceIDRemapper != nil { + in, out := &in.TraceIDRemapper, &out.TraceIDRemapper + *out = make([]ProcessorTraceIDRemapperInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URLParser != nil { + in, out := &in.URLParser, &out.URLParser + *out = make([]ProcessorURLParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserAgentParser != nil { + in, out := &in.UserAgentParser, &out.UserAgentParser + *out = make([]ProcessorUserAgentParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorInitParameters. +func (in *ProcessorInitParameters) DeepCopy() *ProcessorInitParameters { + if in == nil { + return nil + } + out := new(ProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorLookupProcessorInitParameters) DeepCopyInto(out *ProcessorLookupProcessorInitParameters) { + *out = *in + if in.DefaultLookup != nil { + in, out := &in.DefaultLookup, &out.DefaultLookup + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupTable != nil { + in, out := &in.LookupTable, &out.LookupTable + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorLookupProcessorInitParameters. +func (in *ProcessorLookupProcessorInitParameters) DeepCopy() *ProcessorLookupProcessorInitParameters { + if in == nil { + return nil + } + out := new(ProcessorLookupProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorLookupProcessorObservation) DeepCopyInto(out *ProcessorLookupProcessorObservation) { + *out = *in + if in.DefaultLookup != nil { + in, out := &in.DefaultLookup, &out.DefaultLookup + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupTable != nil { + in, out := &in.LookupTable, &out.LookupTable + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorLookupProcessorObservation. +func (in *ProcessorLookupProcessorObservation) DeepCopy() *ProcessorLookupProcessorObservation { + if in == nil { + return nil + } + out := new(ProcessorLookupProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorLookupProcessorParameters) DeepCopyInto(out *ProcessorLookupProcessorParameters) { + *out = *in + if in.DefaultLookup != nil { + in, out := &in.DefaultLookup, &out.DefaultLookup + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupTable != nil { + in, out := &in.LookupTable, &out.LookupTable + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorLookupProcessorParameters. +func (in *ProcessorLookupProcessorParameters) DeepCopy() *ProcessorLookupProcessorParameters { + if in == nil { + return nil + } + out := new(ProcessorLookupProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorMessageRemapperInitParameters) DeepCopyInto(out *ProcessorMessageRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorMessageRemapperInitParameters. +func (in *ProcessorMessageRemapperInitParameters) DeepCopy() *ProcessorMessageRemapperInitParameters { + if in == nil { + return nil + } + out := new(ProcessorMessageRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorMessageRemapperObservation) DeepCopyInto(out *ProcessorMessageRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorMessageRemapperObservation. +func (in *ProcessorMessageRemapperObservation) DeepCopy() *ProcessorMessageRemapperObservation { + if in == nil { + return nil + } + out := new(ProcessorMessageRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorMessageRemapperParameters) DeepCopyInto(out *ProcessorMessageRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorMessageRemapperParameters. +func (in *ProcessorMessageRemapperParameters) DeepCopy() *ProcessorMessageRemapperParameters { + if in == nil { + return nil + } + out := new(ProcessorMessageRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorObservation) DeepCopyInto(out *ProcessorObservation) { + *out = *in + if in.ArithmeticProcessor != nil { + in, out := &in.ArithmeticProcessor, &out.ArithmeticProcessor + *out = make([]ArithmeticProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AttributeRemapper != nil { + in, out := &in.AttributeRemapper, &out.AttributeRemapper + *out = make([]AttributeRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CategoryProcessor != nil { + in, out := &in.CategoryProcessor, &out.CategoryProcessor + *out = make([]CategoryProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DateRemapper != nil { + in, out := &in.DateRemapper, &out.DateRemapper + *out = make([]DateRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GeoIPParser != nil { + in, out := &in.GeoIPParser, &out.GeoIPParser + *out = make([]GeoIPParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GrokParser != nil { + in, out := &in.GrokParser, &out.GrokParser + *out = make([]GrokParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LookupProcessor != nil { + in, out := &in.LookupProcessor, &out.LookupProcessor + *out = make([]LookupProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MessageRemapper != nil { + in, out := &in.MessageRemapper, &out.MessageRemapper + *out = make([]MessageRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Pipeline != nil { + in, out := &in.Pipeline, &out.Pipeline + *out = make([]PipelineObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReferenceTableLookupProcessor != nil { + in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor + *out = make([]ProcessorReferenceTableLookupProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceRemapper != nil { + in, out := &in.ServiceRemapper, &out.ServiceRemapper + *out = make([]ProcessorServiceRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatusRemapper != nil { + in, out := &in.StatusRemapper, &out.StatusRemapper + *out = make([]ProcessorStatusRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StringBuilderProcessor != nil { + in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor + *out = make([]ProcessorStringBuilderProcessorObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TraceIDRemapper != nil { + in, out := &in.TraceIDRemapper, &out.TraceIDRemapper + *out = make([]ProcessorTraceIDRemapperObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URLParser != nil { + in, out := &in.URLParser, &out.URLParser + *out = make([]ProcessorURLParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserAgentParser != nil { + in, out := &in.UserAgentParser, &out.UserAgentParser + *out = make([]ProcessorUserAgentParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorObservation. +func (in *ProcessorObservation) DeepCopy() *ProcessorObservation { + if in == nil { + return nil + } + out := new(ProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorParameters) DeepCopyInto(out *ProcessorParameters) { + *out = *in + if in.ArithmeticProcessor != nil { + in, out := &in.ArithmeticProcessor, &out.ArithmeticProcessor + *out = make([]ArithmeticProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AttributeRemapper != nil { + in, out := &in.AttributeRemapper, &out.AttributeRemapper + *out = make([]AttributeRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CategoryProcessor != nil { + in, out := &in.CategoryProcessor, &out.CategoryProcessor + *out = make([]CategoryProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DateRemapper != nil { + in, out := &in.DateRemapper, &out.DateRemapper + *out = make([]DateRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GeoIPParser != nil { + in, out := &in.GeoIPParser, &out.GeoIPParser + *out = make([]GeoIPParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.GrokParser != nil { + in, out := &in.GrokParser, &out.GrokParser + *out = make([]GrokParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LookupProcessor != nil { + in, out := &in.LookupProcessor, &out.LookupProcessor + *out = make([]LookupProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MessageRemapper != nil { + in, out := &in.MessageRemapper, &out.MessageRemapper + *out = make([]MessageRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Pipeline != nil { + in, out := &in.Pipeline, &out.Pipeline + *out = make([]PipelineParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReferenceTableLookupProcessor != nil { + in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor + *out = make([]ProcessorReferenceTableLookupProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceRemapper != nil { + in, out := &in.ServiceRemapper, &out.ServiceRemapper + *out = make([]ProcessorServiceRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StatusRemapper != nil { + in, out := &in.StatusRemapper, &out.StatusRemapper + *out = make([]ProcessorStatusRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StringBuilderProcessor != nil { + in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor + *out = make([]ProcessorStringBuilderProcessorParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TraceIDRemapper != nil { + in, out := &in.TraceIDRemapper, &out.TraceIDRemapper + *out = make([]ProcessorTraceIDRemapperParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URLParser != nil { + in, out := &in.URLParser, &out.URLParser + *out = make([]ProcessorURLParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserAgentParser != nil { + in, out := &in.UserAgentParser, &out.UserAgentParser + *out = make([]ProcessorUserAgentParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorParameters. +func (in *ProcessorParameters) DeepCopy() *ProcessorParameters { + if in == nil { + return nil + } + out := new(ProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorReferenceTableLookupProcessorInitParameters) DeepCopyInto(out *ProcessorReferenceTableLookupProcessorInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupEnrichmentTable != nil { + in, out := &in.LookupEnrichmentTable, &out.LookupEnrichmentTable + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorReferenceTableLookupProcessorInitParameters. +func (in *ProcessorReferenceTableLookupProcessorInitParameters) DeepCopy() *ProcessorReferenceTableLookupProcessorInitParameters { + if in == nil { + return nil + } + out := new(ProcessorReferenceTableLookupProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorReferenceTableLookupProcessorObservation) DeepCopyInto(out *ProcessorReferenceTableLookupProcessorObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupEnrichmentTable != nil { + in, out := &in.LookupEnrichmentTable, &out.LookupEnrichmentTable + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorReferenceTableLookupProcessorObservation. +func (in *ProcessorReferenceTableLookupProcessorObservation) DeepCopy() *ProcessorReferenceTableLookupProcessorObservation { + if in == nil { + return nil + } + out := new(ProcessorReferenceTableLookupProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorReferenceTableLookupProcessorParameters) DeepCopyInto(out *ProcessorReferenceTableLookupProcessorParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupEnrichmentTable != nil { + in, out := &in.LookupEnrichmentTable, &out.LookupEnrichmentTable + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorReferenceTableLookupProcessorParameters. +func (in *ProcessorReferenceTableLookupProcessorParameters) DeepCopy() *ProcessorReferenceTableLookupProcessorParameters { + if in == nil { + return nil + } + out := new(ProcessorReferenceTableLookupProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorServiceRemapperInitParameters) DeepCopyInto(out *ProcessorServiceRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorServiceRemapperInitParameters. +func (in *ProcessorServiceRemapperInitParameters) DeepCopy() *ProcessorServiceRemapperInitParameters { + if in == nil { + return nil + } + out := new(ProcessorServiceRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorServiceRemapperObservation) DeepCopyInto(out *ProcessorServiceRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorServiceRemapperObservation. +func (in *ProcessorServiceRemapperObservation) DeepCopy() *ProcessorServiceRemapperObservation { + if in == nil { + return nil + } + out := new(ProcessorServiceRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorServiceRemapperParameters) DeepCopyInto(out *ProcessorServiceRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorServiceRemapperParameters. +func (in *ProcessorServiceRemapperParameters) DeepCopy() *ProcessorServiceRemapperParameters { + if in == nil { + return nil + } + out := new(ProcessorServiceRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorStatusRemapperInitParameters) DeepCopyInto(out *ProcessorStatusRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorStatusRemapperInitParameters. +func (in *ProcessorStatusRemapperInitParameters) DeepCopy() *ProcessorStatusRemapperInitParameters { + if in == nil { + return nil + } + out := new(ProcessorStatusRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorStatusRemapperObservation) DeepCopyInto(out *ProcessorStatusRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorStatusRemapperObservation. +func (in *ProcessorStatusRemapperObservation) DeepCopy() *ProcessorStatusRemapperObservation { + if in == nil { + return nil + } + out := new(ProcessorStatusRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorStatusRemapperParameters) DeepCopyInto(out *ProcessorStatusRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorStatusRemapperParameters. +func (in *ProcessorStatusRemapperParameters) DeepCopy() *ProcessorStatusRemapperParameters { + if in == nil { + return nil + } + out := new(ProcessorStatusRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorStringBuilderProcessorInitParameters) DeepCopyInto(out *ProcessorStringBuilderProcessorInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorStringBuilderProcessorInitParameters. +func (in *ProcessorStringBuilderProcessorInitParameters) DeepCopy() *ProcessorStringBuilderProcessorInitParameters { + if in == nil { + return nil + } + out := new(ProcessorStringBuilderProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorStringBuilderProcessorObservation) DeepCopyInto(out *ProcessorStringBuilderProcessorObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorStringBuilderProcessorObservation. +func (in *ProcessorStringBuilderProcessorObservation) DeepCopy() *ProcessorStringBuilderProcessorObservation { + if in == nil { + return nil + } + out := new(ProcessorStringBuilderProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorStringBuilderProcessorParameters) DeepCopyInto(out *ProcessorStringBuilderProcessorParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorStringBuilderProcessorParameters. +func (in *ProcessorStringBuilderProcessorParameters) DeepCopy() *ProcessorStringBuilderProcessorParameters { + if in == nil { + return nil + } + out := new(ProcessorStringBuilderProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorTraceIDRemapperInitParameters) DeepCopyInto(out *ProcessorTraceIDRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorTraceIDRemapperInitParameters. +func (in *ProcessorTraceIDRemapperInitParameters) DeepCopy() *ProcessorTraceIDRemapperInitParameters { + if in == nil { + return nil + } + out := new(ProcessorTraceIDRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorTraceIDRemapperObservation) DeepCopyInto(out *ProcessorTraceIDRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorTraceIDRemapperObservation. +func (in *ProcessorTraceIDRemapperObservation) DeepCopy() *ProcessorTraceIDRemapperObservation { + if in == nil { + return nil + } + out := new(ProcessorTraceIDRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorTraceIDRemapperParameters) DeepCopyInto(out *ProcessorTraceIDRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorTraceIDRemapperParameters. +func (in *ProcessorTraceIDRemapperParameters) DeepCopy() *ProcessorTraceIDRemapperParameters { + if in == nil { + return nil + } + out := new(ProcessorTraceIDRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorURLParserInitParameters) DeepCopyInto(out *ProcessorURLParserInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NormalizeEndingSlashes != nil { + in, out := &in.NormalizeEndingSlashes, &out.NormalizeEndingSlashes + *out = new(bool) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorURLParserInitParameters. +func (in *ProcessorURLParserInitParameters) DeepCopy() *ProcessorURLParserInitParameters { + if in == nil { + return nil + } + out := new(ProcessorURLParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorURLParserObservation) DeepCopyInto(out *ProcessorURLParserObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NormalizeEndingSlashes != nil { + in, out := &in.NormalizeEndingSlashes, &out.NormalizeEndingSlashes + *out = new(bool) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorURLParserObservation. +func (in *ProcessorURLParserObservation) DeepCopy() *ProcessorURLParserObservation { + if in == nil { + return nil + } + out := new(ProcessorURLParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorURLParserParameters) DeepCopyInto(out *ProcessorURLParserParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NormalizeEndingSlashes != nil { + in, out := &in.NormalizeEndingSlashes, &out.NormalizeEndingSlashes + *out = new(bool) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorURLParserParameters. +func (in *ProcessorURLParserParameters) DeepCopy() *ProcessorURLParserParameters { + if in == nil { + return nil + } + out := new(ProcessorURLParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorUserAgentParserInitParameters) DeepCopyInto(out *ProcessorUserAgentParserInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsEncoded != nil { + in, out := &in.IsEncoded, &out.IsEncoded + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorUserAgentParserInitParameters. +func (in *ProcessorUserAgentParserInitParameters) DeepCopy() *ProcessorUserAgentParserInitParameters { + if in == nil { + return nil + } + out := new(ProcessorUserAgentParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorUserAgentParserObservation) DeepCopyInto(out *ProcessorUserAgentParserObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsEncoded != nil { + in, out := &in.IsEncoded, &out.IsEncoded + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorUserAgentParserObservation. +func (in *ProcessorUserAgentParserObservation) DeepCopy() *ProcessorUserAgentParserObservation { + if in == nil { + return nil + } + out := new(ProcessorUserAgentParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorUserAgentParserParameters) DeepCopyInto(out *ProcessorUserAgentParserParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsEncoded != nil { + in, out := &in.IsEncoded, &out.IsEncoded + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProcessorUserAgentParserParameters. +func (in *ProcessorUserAgentParserParameters) DeepCopy() *ProcessorUserAgentParserParameters { + if in == nil { + return nil + } + out := new(ProcessorUserAgentParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReferenceTableLookupProcessorInitParameters) DeepCopyInto(out *ReferenceTableLookupProcessorInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupEnrichmentTable != nil { + in, out := &in.LookupEnrichmentTable, &out.LookupEnrichmentTable + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceTableLookupProcessorInitParameters. +func (in *ReferenceTableLookupProcessorInitParameters) DeepCopy() *ReferenceTableLookupProcessorInitParameters { + if in == nil { + return nil + } + out := new(ReferenceTableLookupProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReferenceTableLookupProcessorObservation) DeepCopyInto(out *ReferenceTableLookupProcessorObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupEnrichmentTable != nil { + in, out := &in.LookupEnrichmentTable, &out.LookupEnrichmentTable + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceTableLookupProcessorObservation. +func (in *ReferenceTableLookupProcessorObservation) DeepCopy() *ReferenceTableLookupProcessorObservation { + if in == nil { + return nil + } + out := new(ReferenceTableLookupProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReferenceTableLookupProcessorParameters) DeepCopyInto(out *ReferenceTableLookupProcessorParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.LookupEnrichmentTable != nil { + in, out := &in.LookupEnrichmentTable, &out.LookupEnrichmentTable + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceTableLookupProcessorParameters. +func (in *ReferenceTableLookupProcessorParameters) DeepCopy() *ReferenceTableLookupProcessorParameters { + if in == nil { + return nil + } + out := new(ReferenceTableLookupProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *S3ArchiveInitParameters) DeepCopyInto(out *S3ArchiveInitParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.Bucket != nil { + in, out := &in.Bucket, &out.Bucket + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.RoleName != nil { + in, out := &in.RoleName, &out.RoleName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3ArchiveInitParameters. +func (in *S3ArchiveInitParameters) DeepCopy() *S3ArchiveInitParameters { + if in == nil { + return nil + } + out := new(S3ArchiveInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *S3ArchiveObservation) DeepCopyInto(out *S3ArchiveObservation) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.Bucket != nil { + in, out := &in.Bucket, &out.Bucket + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.RoleName != nil { + in, out := &in.RoleName, &out.RoleName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3ArchiveObservation. +func (in *S3ArchiveObservation) DeepCopy() *S3ArchiveObservation { + if in == nil { + return nil + } + out := new(S3ArchiveObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *S3ArchiveParameters) DeepCopyInto(out *S3ArchiveParameters) { + *out = *in + if in.AccountID != nil { + in, out := &in.AccountID, &out.AccountID + *out = new(string) + **out = **in + } + if in.Bucket != nil { + in, out := &in.Bucket, &out.Bucket + *out = new(string) + **out = **in + } + if in.Path != nil { + in, out := &in.Path, &out.Path + *out = new(string) + **out = **in + } + if in.RoleName != nil { + in, out := &in.RoleName, &out.RoleName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3ArchiveParameters. +func (in *S3ArchiveParameters) DeepCopy() *S3ArchiveParameters { + if in == nil { + return nil + } + out := new(S3ArchiveParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceRemapperInitParameters) DeepCopyInto(out *ServiceRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceRemapperInitParameters. +func (in *ServiceRemapperInitParameters) DeepCopy() *ServiceRemapperInitParameters { + if in == nil { + return nil + } + out := new(ServiceRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceRemapperObservation) DeepCopyInto(out *ServiceRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceRemapperObservation. +func (in *ServiceRemapperObservation) DeepCopy() *ServiceRemapperObservation { + if in == nil { + return nil + } + out := new(ServiceRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceRemapperParameters) DeepCopyInto(out *ServiceRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceRemapperParameters. +func (in *ServiceRemapperParameters) DeepCopy() *ServiceRemapperParameters { + if in == nil { + return nil + } + out := new(ServiceRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatusRemapperInitParameters) DeepCopyInto(out *StatusRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatusRemapperInitParameters. +func (in *StatusRemapperInitParameters) DeepCopy() *StatusRemapperInitParameters { + if in == nil { + return nil + } + out := new(StatusRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatusRemapperObservation) DeepCopyInto(out *StatusRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatusRemapperObservation. +func (in *StatusRemapperObservation) DeepCopy() *StatusRemapperObservation { + if in == nil { + return nil + } + out := new(StatusRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatusRemapperParameters) DeepCopyInto(out *StatusRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatusRemapperParameters. +func (in *StatusRemapperParameters) DeepCopy() *StatusRemapperParameters { + if in == nil { + return nil + } + out := new(StatusRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StringBuilderProcessorInitParameters) DeepCopyInto(out *StringBuilderProcessorInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StringBuilderProcessorInitParameters. +func (in *StringBuilderProcessorInitParameters) DeepCopy() *StringBuilderProcessorInitParameters { + if in == nil { + return nil + } + out := new(StringBuilderProcessorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StringBuilderProcessorObservation) DeepCopyInto(out *StringBuilderProcessorObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StringBuilderProcessorObservation. +func (in *StringBuilderProcessorObservation) DeepCopy() *StringBuilderProcessorObservation { + if in == nil { + return nil + } + out := new(StringBuilderProcessorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StringBuilderProcessorParameters) DeepCopyInto(out *StringBuilderProcessorParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsReplaceMissing != nil { + in, out := &in.IsReplaceMissing, &out.IsReplaceMissing + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StringBuilderProcessorParameters. +func (in *StringBuilderProcessorParameters) DeepCopy() *StringBuilderProcessorParameters { + if in == nil { + return nil + } + out := new(StringBuilderProcessorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TraceIDRemapperInitParameters) DeepCopyInto(out *TraceIDRemapperInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TraceIDRemapperInitParameters. +func (in *TraceIDRemapperInitParameters) DeepCopy() *TraceIDRemapperInitParameters { + if in == nil { + return nil + } + out := new(TraceIDRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TraceIDRemapperObservation) DeepCopyInto(out *TraceIDRemapperObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TraceIDRemapperObservation. +func (in *TraceIDRemapperObservation) DeepCopy() *TraceIDRemapperObservation { + if in == nil { + return nil + } + out := new(TraceIDRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TraceIDRemapperParameters) DeepCopyInto(out *TraceIDRemapperParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TraceIDRemapperParameters. +func (in *TraceIDRemapperParameters) DeepCopy() *TraceIDRemapperParameters { + if in == nil { + return nil + } + out := new(TraceIDRemapperParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *URLParserInitParameters) DeepCopyInto(out *URLParserInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NormalizeEndingSlashes != nil { + in, out := &in.NormalizeEndingSlashes, &out.NormalizeEndingSlashes + *out = new(bool) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new URLParserInitParameters. +func (in *URLParserInitParameters) DeepCopy() *URLParserInitParameters { + if in == nil { + return nil + } + out := new(URLParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *URLParserObservation) DeepCopyInto(out *URLParserObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NormalizeEndingSlashes != nil { + in, out := &in.NormalizeEndingSlashes, &out.NormalizeEndingSlashes + *out = new(bool) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new URLParserObservation. +func (in *URLParserObservation) DeepCopy() *URLParserObservation { + if in == nil { + return nil + } + out := new(URLParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *URLParserParameters) DeepCopyInto(out *URLParserParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NormalizeEndingSlashes != nil { + in, out := &in.NormalizeEndingSlashes, &out.NormalizeEndingSlashes + *out = new(bool) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new URLParserParameters. +func (in *URLParserParameters) DeepCopy() *URLParserParameters { + if in == nil { + return nil + } + out := new(URLParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAgentParserInitParameters) DeepCopyInto(out *UserAgentParserInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsEncoded != nil { + in, out := &in.IsEncoded, &out.IsEncoded + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAgentParserInitParameters. +func (in *UserAgentParserInitParameters) DeepCopy() *UserAgentParserInitParameters { + if in == nil { + return nil + } + out := new(UserAgentParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAgentParserObservation) DeepCopyInto(out *UserAgentParserObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsEncoded != nil { + in, out := &in.IsEncoded, &out.IsEncoded + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAgentParserObservation. +func (in *UserAgentParserObservation) DeepCopy() *UserAgentParserObservation { + if in == nil { + return nil + } + out := new(UserAgentParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAgentParserParameters) DeepCopyInto(out *UserAgentParserParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.IsEncoded != nil { + in, out := &in.IsEncoded, &out.IsEncoded + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Target != nil { + in, out := &in.Target, &out.Target + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAgentParserParameters. +func (in *UserAgentParserParameters) DeepCopy() *UserAgentParserParameters { + if in == nil { + return nil + } + out := new(UserAgentParserParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/logs/v1alpha1/zz_generated.managed.go b/apis/logs/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..f0c6a8a --- /dev/null +++ b/apis/logs/v1alpha1/zz_generated.managed.go @@ -0,0 +1,488 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this Archive. +func (mg *Archive) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Archive. +func (mg *Archive) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Archive. +func (mg *Archive) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Archive. +func (mg *Archive) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Archive. +func (mg *Archive) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Archive. +func (mg *Archive) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Archive. +func (mg *Archive) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Archive. +func (mg *Archive) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Archive. +func (mg *Archive) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Archive. +func (mg *Archive) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Archive. +func (mg *Archive) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Archive. +func (mg *Archive) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ArchiveOrder. +func (mg *ArchiveOrder) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ArchiveOrder. +func (mg *ArchiveOrder) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ArchiveOrder. +func (mg *ArchiveOrder) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ArchiveOrder. +func (mg *ArchiveOrder) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ArchiveOrder. +func (mg *ArchiveOrder) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ArchiveOrder. +func (mg *ArchiveOrder) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ArchiveOrder. +func (mg *ArchiveOrder) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ArchiveOrder. +func (mg *ArchiveOrder) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ArchiveOrder. +func (mg *ArchiveOrder) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ArchiveOrder. +func (mg *ArchiveOrder) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ArchiveOrder. +func (mg *ArchiveOrder) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ArchiveOrder. +func (mg *ArchiveOrder) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this CustomPipeline. +func (mg *CustomPipeline) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this CustomPipeline. +func (mg *CustomPipeline) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this CustomPipeline. +func (mg *CustomPipeline) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this CustomPipeline. +func (mg *CustomPipeline) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this CustomPipeline. +func (mg *CustomPipeline) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this CustomPipeline. +func (mg *CustomPipeline) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this CustomPipeline. +func (mg *CustomPipeline) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this CustomPipeline. +func (mg *CustomPipeline) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this CustomPipeline. +func (mg *CustomPipeline) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this CustomPipeline. +func (mg *CustomPipeline) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this CustomPipeline. +func (mg *CustomPipeline) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this CustomPipeline. +func (mg *CustomPipeline) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Index. +func (mg *Index) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Index. +func (mg *Index) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Index. +func (mg *Index) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Index. +func (mg *Index) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Index. +func (mg *Index) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Index. +func (mg *Index) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Index. +func (mg *Index) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Index. +func (mg *Index) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Index. +func (mg *Index) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Index. +func (mg *Index) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Index. +func (mg *Index) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Index. +func (mg *Index) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this IndexOrder. +func (mg *IndexOrder) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this IndexOrder. +func (mg *IndexOrder) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this IndexOrder. +func (mg *IndexOrder) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this IndexOrder. +func (mg *IndexOrder) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this IndexOrder. +func (mg *IndexOrder) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this IndexOrder. +func (mg *IndexOrder) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this IndexOrder. +func (mg *IndexOrder) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this IndexOrder. +func (mg *IndexOrder) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this IndexOrder. +func (mg *IndexOrder) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this IndexOrder. +func (mg *IndexOrder) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this IndexOrder. +func (mg *IndexOrder) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this IndexOrder. +func (mg *IndexOrder) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this IntegrationPipeline. +func (mg *IntegrationPipeline) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this IntegrationPipeline. +func (mg *IntegrationPipeline) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this IntegrationPipeline. +func (mg *IntegrationPipeline) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this IntegrationPipeline. +func (mg *IntegrationPipeline) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this IntegrationPipeline. +func (mg *IntegrationPipeline) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this IntegrationPipeline. +func (mg *IntegrationPipeline) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this IntegrationPipeline. +func (mg *IntegrationPipeline) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this IntegrationPipeline. +func (mg *IntegrationPipeline) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this IntegrationPipeline. +func (mg *IntegrationPipeline) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this IntegrationPipeline. +func (mg *IntegrationPipeline) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this IntegrationPipeline. +func (mg *IntegrationPipeline) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this IntegrationPipeline. +func (mg *IntegrationPipeline) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Metric. +func (mg *Metric) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Metric. +func (mg *Metric) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Metric. +func (mg *Metric) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Metric. +func (mg *Metric) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Metric. +func (mg *Metric) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Metric. +func (mg *Metric) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Metric. +func (mg *Metric) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Metric. +func (mg *Metric) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Metric. +func (mg *Metric) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Metric. +func (mg *Metric) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Metric. +func (mg *Metric) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Metric. +func (mg *Metric) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this PipelineOrder. +func (mg *PipelineOrder) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this PipelineOrder. +func (mg *PipelineOrder) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this PipelineOrder. +func (mg *PipelineOrder) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this PipelineOrder. +func (mg *PipelineOrder) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this PipelineOrder. +func (mg *PipelineOrder) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this PipelineOrder. +func (mg *PipelineOrder) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this PipelineOrder. +func (mg *PipelineOrder) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this PipelineOrder. +func (mg *PipelineOrder) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this PipelineOrder. +func (mg *PipelineOrder) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this PipelineOrder. +func (mg *PipelineOrder) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this PipelineOrder. +func (mg *PipelineOrder) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this PipelineOrder. +func (mg *PipelineOrder) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/logs/v1alpha1/zz_generated.managedlist.go b/apis/logs/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..868d8e8 --- /dev/null +++ b/apis/logs/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,80 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ArchiveList. +func (l *ArchiveList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this ArchiveOrderList. +func (l *ArchiveOrderList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this CustomPipelineList. +func (l *CustomPipelineList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this IndexList. +func (l *IndexList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this IndexOrderList. +func (l *IndexOrderList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this IntegrationPipelineList. +func (l *IntegrationPipelineList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this MetricList. +func (l *MetricList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this PipelineOrderList. +func (l *PipelineOrderList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/logs/v1alpha1/zz_groupversion_info.go b/apis/logs/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..f307362 --- /dev/null +++ b/apis/logs/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=logs.datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "logs.datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/logs/v1alpha1/zz_index_terraformed.go b/apis/logs/v1alpha1/zz_index_terraformed.go new file mode 100755 index 0000000..88a6275 --- /dev/null +++ b/apis/logs/v1alpha1/zz_index_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Index +func (mg *Index) GetTerraformResourceType() string { + return "datadog_logs_index" +} + +// GetConnectionDetailsMapping for this Index +func (tr *Index) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Index +func (tr *Index) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Index +func (tr *Index) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Index +func (tr *Index) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Index +func (tr *Index) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Index +func (tr *Index) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Index +func (tr *Index) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Index +func (tr *Index) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Index using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Index) LateInitialize(attrs []byte) (bool, error) { + params := &IndexParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Index) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_index_types.go b/apis/logs/v1alpha1/zz_index_types.go new file mode 100755 index 0000000..29ac0bf --- /dev/null +++ b/apis/logs/v1alpha1/zz_index_types.go @@ -0,0 +1,334 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type DailyLimitResetInitParameters struct { + + // (String) String in HH:00 format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + // String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + ResetTime *string `json:"resetTime,omitempty" tf:"reset_time,omitempty"` + + // |+)HH:00 format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + // String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + ResetUtcOffset *string `json:"resetUtcOffset,omitempty" tf:"reset_utc_offset,omitempty"` +} + +type DailyLimitResetObservation struct { + + // (String) String in HH:00 format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + // String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + ResetTime *string `json:"resetTime,omitempty" tf:"reset_time,omitempty"` + + // |+)HH:00 format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + // String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + ResetUtcOffset *string `json:"resetUtcOffset,omitempty" tf:"reset_utc_offset,omitempty"` +} + +type DailyLimitResetParameters struct { + + // (String) String in HH:00 format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + // String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + // +kubebuilder:validation:Optional + ResetTime *string `json:"resetTime" tf:"reset_time,omitempty"` + + // |+)HH:00 format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + // String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + // +kubebuilder:validation:Optional + ResetUtcOffset *string `json:"resetUtcOffset" tf:"reset_utc_offset,omitempty"` +} + +type ExclusionFilterFilterInitParameters struct { + + // (String) Logs filter criteria. Only logs matching this filter criteria are considered for this index. + // Only logs matching the filter criteria and the query of the parent index will be considered for this exclusion filter. + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The fraction of logs excluded by the exclusion filter, when active. + // The fraction of logs excluded by the exclusion filter, when active. + SampleRate *float64 `json:"sampleRate,omitempty" tf:"sample_rate,omitempty"` +} + +type ExclusionFilterFilterObservation struct { + + // (String) Logs filter criteria. Only logs matching this filter criteria are considered for this index. + // Only logs matching the filter criteria and the query of the parent index will be considered for this exclusion filter. + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The fraction of logs excluded by the exclusion filter, when active. + // The fraction of logs excluded by the exclusion filter, when active. + SampleRate *float64 `json:"sampleRate,omitempty" tf:"sample_rate,omitempty"` +} + +type ExclusionFilterFilterParameters struct { + + // (String) Logs filter criteria. Only logs matching this filter criteria are considered for this index. + // Only logs matching the filter criteria and the query of the parent index will be considered for this exclusion filter. + // +kubebuilder:validation:Optional + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The fraction of logs excluded by the exclusion filter, when active. + // The fraction of logs excluded by the exclusion filter, when active. + // +kubebuilder:validation:Optional + SampleRate *float64 `json:"sampleRate,omitempty" tf:"sample_rate,omitempty"` +} + +type ExclusionFilterInitParameters struct { + + // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + Filter []ExclusionFilterFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Boolean) A boolean stating if the exclusion is active or not. + // A boolean stating if the exclusion is active or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) The name of the index. + // The name of the exclusion filter. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type ExclusionFilterObservation struct { + + // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + Filter []ExclusionFilterFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Boolean) A boolean stating if the exclusion is active or not. + // A boolean stating if the exclusion is active or not. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) The name of the index. + // The name of the exclusion filter. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type ExclusionFilterParameters struct { + + // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + // +kubebuilder:validation:Optional + Filter []ExclusionFilterFilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Boolean) A boolean stating if the exclusion is active or not. + // A boolean stating if the exclusion is active or not. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) The name of the index. + // The name of the exclusion filter. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type IndexFilterInitParameters struct { + + // (String) Logs filter criteria. Only logs matching this filter criteria are considered for this index. + // Logs filter criteria. Only logs matching this filter criteria are considered for this index. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type IndexFilterObservation struct { + + // (String) Logs filter criteria. Only logs matching this filter criteria are considered for this index. + // Logs filter criteria. Only logs matching this filter criteria are considered for this index. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type IndexFilterParameters struct { + + // (String) Logs filter criteria. Only logs matching this filter criteria are considered for this index. + // Logs filter criteria. Only logs matching this filter criteria are considered for this index. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type IndexInitParameters struct { + + // limited. + // The number of log events you can send in this index per day before you are rate-limited. + DailyLimit *float64 `json:"dailyLimit,omitempty" tf:"daily_limit,omitempty"` + + // (Block List, Max: 1) Object containing options to override the default daily limit reset time. (see below for nested schema) + // Object containing options to override the default daily limit reset time. + DailyLimitReset []DailyLimitResetInitParameters `json:"dailyLimitReset,omitempty" tf:"daily_limit_reset,omitempty"` + + // (Number) A percentage threshold of the daily quota at which a Datadog warning event is generated. + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage *float64 `json:"dailyLimitWarningThresholdPercentage,omitempty" tf:"daily_limit_warning_threshold_percentage,omitempty"` + + // (Boolean) If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. + // If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. + DisableDailyLimit *bool `json:"disableDailyLimit,omitempty" tf:"disable_daily_limit,omitempty"` + + // (Block List) List of exclusion filters. (see below for nested schema) + // List of exclusion filters. + ExclusionFilter []ExclusionFilterInitParameters `json:"exclusionFilter,omitempty" tf:"exclusion_filter,omitempty"` + + // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + // Logs filter + Filter []IndexFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) The name of the index. + // The name of the index. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Number) The number of days before logs are deleted from this index. + // The number of days before logs are deleted from this index. + RetentionDays *float64 `json:"retentionDays,omitempty" tf:"retention_days,omitempty"` +} + +type IndexObservation struct { + + // limited. + // The number of log events you can send in this index per day before you are rate-limited. + DailyLimit *float64 `json:"dailyLimit,omitempty" tf:"daily_limit,omitempty"` + + // (Block List, Max: 1) Object containing options to override the default daily limit reset time. (see below for nested schema) + // Object containing options to override the default daily limit reset time. + DailyLimitReset []DailyLimitResetObservation `json:"dailyLimitReset,omitempty" tf:"daily_limit_reset,omitempty"` + + // (Number) A percentage threshold of the daily quota at which a Datadog warning event is generated. + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + DailyLimitWarningThresholdPercentage *float64 `json:"dailyLimitWarningThresholdPercentage,omitempty" tf:"daily_limit_warning_threshold_percentage,omitempty"` + + // (Boolean) If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. + // If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. + DisableDailyLimit *bool `json:"disableDailyLimit,omitempty" tf:"disable_daily_limit,omitempty"` + + // (Block List) List of exclusion filters. (see below for nested schema) + // List of exclusion filters. + ExclusionFilter []ExclusionFilterObservation `json:"exclusionFilter,omitempty" tf:"exclusion_filter,omitempty"` + + // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + // Logs filter + Filter []IndexFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the index. + // The name of the index. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Number) The number of days before logs are deleted from this index. + // The number of days before logs are deleted from this index. + RetentionDays *float64 `json:"retentionDays,omitempty" tf:"retention_days,omitempty"` +} + +type IndexParameters struct { + + // limited. + // The number of log events you can send in this index per day before you are rate-limited. + // +kubebuilder:validation:Optional + DailyLimit *float64 `json:"dailyLimit,omitempty" tf:"daily_limit,omitempty"` + + // (Block List, Max: 1) Object containing options to override the default daily limit reset time. (see below for nested schema) + // Object containing options to override the default daily limit reset time. + // +kubebuilder:validation:Optional + DailyLimitReset []DailyLimitResetParameters `json:"dailyLimitReset,omitempty" tf:"daily_limit_reset,omitempty"` + + // (Number) A percentage threshold of the daily quota at which a Datadog warning event is generated. + // A percentage threshold of the daily quota at which a Datadog warning event is generated. + // +kubebuilder:validation:Optional + DailyLimitWarningThresholdPercentage *float64 `json:"dailyLimitWarningThresholdPercentage,omitempty" tf:"daily_limit_warning_threshold_percentage,omitempty"` + + // (Boolean) If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. + // If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. + // +kubebuilder:validation:Optional + DisableDailyLimit *bool `json:"disableDailyLimit,omitempty" tf:"disable_daily_limit,omitempty"` + + // (Block List) List of exclusion filters. (see below for nested schema) + // List of exclusion filters. + // +kubebuilder:validation:Optional + ExclusionFilter []ExclusionFilterParameters `json:"exclusionFilter,omitempty" tf:"exclusion_filter,omitempty"` + + // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + // Logs filter + // +kubebuilder:validation:Optional + Filter []IndexFilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) The name of the index. + // The name of the index. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Number) The number of days before logs are deleted from this index. + // The number of days before logs are deleted from this index. + // +kubebuilder:validation:Optional + RetentionDays *float64 `json:"retentionDays,omitempty" tf:"retention_days,omitempty"` +} + +// IndexSpec defines the desired state of Index +type IndexSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider IndexParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider IndexInitParameters `json:"initProvider,omitempty"` +} + +// IndexStatus defines the observed state of Index. +type IndexStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider IndexObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Index is the Schema for the Indexs API. Provides a Datadog Logs Index API resource. This can be used to create and manage Datadog logs indexes. Reach out to support to delete a logs index. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Index struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.filter) || (has(self.initProvider) && has(self.initProvider.filter))",message="spec.forProvider.filter is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec IndexSpec `json:"spec"` + Status IndexStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// IndexList contains a list of Indexs +type IndexList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Index `json:"items"` +} + +// Repository type metadata. +var ( + Index_Kind = "Index" + Index_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Index_Kind}.String() + Index_KindAPIVersion = Index_Kind + "." + CRDGroupVersion.String() + Index_GroupVersionKind = CRDGroupVersion.WithKind(Index_Kind) +) + +func init() { + SchemeBuilder.Register(&Index{}, &IndexList{}) +} diff --git a/apis/logs/v1alpha1/zz_indexorder_terraformed.go b/apis/logs/v1alpha1/zz_indexorder_terraformed.go new file mode 100755 index 0000000..b5e34ac --- /dev/null +++ b/apis/logs/v1alpha1/zz_indexorder_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this IndexOrder +func (mg *IndexOrder) GetTerraformResourceType() string { + return "datadog_logs_index_order" +} + +// GetConnectionDetailsMapping for this IndexOrder +func (tr *IndexOrder) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this IndexOrder +func (tr *IndexOrder) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this IndexOrder +func (tr *IndexOrder) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this IndexOrder +func (tr *IndexOrder) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this IndexOrder +func (tr *IndexOrder) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this IndexOrder +func (tr *IndexOrder) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this IndexOrder +func (tr *IndexOrder) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this IndexOrder +func (tr *IndexOrder) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this IndexOrder using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *IndexOrder) LateInitialize(attrs []byte) (bool, error) { + params := &IndexOrderParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *IndexOrder) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_indexorder_types.go b/apis/logs/v1alpha1/zz_indexorder_types.go new file mode 100755 index 0000000..acdd2d1 --- /dev/null +++ b/apis/logs/v1alpha1/zz_indexorder_types.go @@ -0,0 +1,118 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type IndexOrderInitParameters struct { + + // (List of String) The index resource list. Logs are tested against the query filter of each index one by one following the order of the list. + // The index resource list. Logs are tested against the query filter of each index one by one following the order of the list. + Indexes []*string `json:"indexes,omitempty" tf:"indexes,omitempty"` + + // (String) The unique name of the index order resource. + // The unique name of the index order resource. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type IndexOrderObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (List of String) The index resource list. Logs are tested against the query filter of each index one by one following the order of the list. + // The index resource list. Logs are tested against the query filter of each index one by one following the order of the list. + Indexes []*string `json:"indexes,omitempty" tf:"indexes,omitempty"` + + // (String) The unique name of the index order resource. + // The unique name of the index order resource. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type IndexOrderParameters struct { + + // (List of String) The index resource list. Logs are tested against the query filter of each index one by one following the order of the list. + // The index resource list. Logs are tested against the query filter of each index one by one following the order of the list. + // +kubebuilder:validation:Optional + Indexes []*string `json:"indexes,omitempty" tf:"indexes,omitempty"` + + // (String) The unique name of the index order resource. + // The unique name of the index order resource. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// IndexOrderSpec defines the desired state of IndexOrder +type IndexOrderSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider IndexOrderParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider IndexOrderInitParameters `json:"initProvider,omitempty"` +} + +// IndexOrderStatus defines the observed state of IndexOrder. +type IndexOrderStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider IndexOrderObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// IndexOrder is the Schema for the IndexOrders API. Provides a Datadog Logs Index API resource. This can be used to manage the order of Datadog logs indexes. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type IndexOrder struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.indexes) || (has(self.initProvider) && has(self.initProvider.indexes))",message="spec.forProvider.indexes is a required parameter" + Spec IndexOrderSpec `json:"spec"` + Status IndexOrderStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// IndexOrderList contains a list of IndexOrders +type IndexOrderList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []IndexOrder `json:"items"` +} + +// Repository type metadata. +var ( + IndexOrder_Kind = "IndexOrder" + IndexOrder_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: IndexOrder_Kind}.String() + IndexOrder_KindAPIVersion = IndexOrder_Kind + "." + CRDGroupVersion.String() + IndexOrder_GroupVersionKind = CRDGroupVersion.WithKind(IndexOrder_Kind) +) + +func init() { + SchemeBuilder.Register(&IndexOrder{}, &IndexOrderList{}) +} diff --git a/apis/logs/v1alpha1/zz_integrationpipeline_terraformed.go b/apis/logs/v1alpha1/zz_integrationpipeline_terraformed.go new file mode 100755 index 0000000..09aaf7f --- /dev/null +++ b/apis/logs/v1alpha1/zz_integrationpipeline_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this IntegrationPipeline +func (mg *IntegrationPipeline) GetTerraformResourceType() string { + return "datadog_logs_integration_pipeline" +} + +// GetConnectionDetailsMapping for this IntegrationPipeline +func (tr *IntegrationPipeline) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this IntegrationPipeline +func (tr *IntegrationPipeline) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this IntegrationPipeline +func (tr *IntegrationPipeline) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this IntegrationPipeline +func (tr *IntegrationPipeline) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this IntegrationPipeline +func (tr *IntegrationPipeline) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this IntegrationPipeline +func (tr *IntegrationPipeline) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this IntegrationPipeline +func (tr *IntegrationPipeline) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this IntegrationPipeline +func (tr *IntegrationPipeline) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this IntegrationPipeline using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *IntegrationPipeline) LateInitialize(attrs []byte) (bool, error) { + params := &IntegrationPipelineParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *IntegrationPipeline) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_integrationpipeline_types.go b/apis/logs/v1alpha1/zz_integrationpipeline_types.go new file mode 100755 index 0000000..b70f3f5 --- /dev/null +++ b/apis/logs/v1alpha1/zz_integrationpipeline_types.go @@ -0,0 +1,104 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type IntegrationPipelineInitParameters struct { + + // (Boolean) Boolean value to enable your pipeline. + // Boolean value to enable your pipeline. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` +} + +type IntegrationPipelineObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) Boolean value to enable your pipeline. + // Boolean value to enable your pipeline. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` +} + +type IntegrationPipelineParameters struct { + + // (Boolean) Boolean value to enable your pipeline. + // Boolean value to enable your pipeline. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` +} + +// IntegrationPipelineSpec defines the desired state of IntegrationPipeline +type IntegrationPipelineSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider IntegrationPipelineParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider IntegrationPipelineInitParameters `json:"initProvider,omitempty"` +} + +// IntegrationPipelineStatus defines the observed state of IntegrationPipeline. +type IntegrationPipelineStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider IntegrationPipelineObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// IntegrationPipeline is the Schema for the IntegrationPipelines API. Provides a Datadog Logs Pipeline API resource to manage the integrations. Integration pipelines are the pipelines that are automatically installed for your organization when sending the logs with specific sources. You don't need to maintain or update these types of pipelines. Keeping them as resources, however, allows you to manage the order of your pipelines by referencing them in your datadog_logs_pipeline_order resource. If you don't need the pipeline_order feature, this resource declaration can be omitted. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type IntegrationPipeline struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec IntegrationPipelineSpec `json:"spec"` + Status IntegrationPipelineStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// IntegrationPipelineList contains a list of IntegrationPipelines +type IntegrationPipelineList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []IntegrationPipeline `json:"items"` +} + +// Repository type metadata. +var ( + IntegrationPipeline_Kind = "IntegrationPipeline" + IntegrationPipeline_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: IntegrationPipeline_Kind}.String() + IntegrationPipeline_KindAPIVersion = IntegrationPipeline_Kind + "." + CRDGroupVersion.String() + IntegrationPipeline_GroupVersionKind = CRDGroupVersion.WithKind(IntegrationPipeline_Kind) +) + +func init() { + SchemeBuilder.Register(&IntegrationPipeline{}, &IntegrationPipelineList{}) +} diff --git a/apis/logs/v1alpha1/zz_metric_terraformed.go b/apis/logs/v1alpha1/zz_metric_terraformed.go new file mode 100755 index 0000000..aed7bb4 --- /dev/null +++ b/apis/logs/v1alpha1/zz_metric_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Metric +func (mg *Metric) GetTerraformResourceType() string { + return "datadog_logs_metric" +} + +// GetConnectionDetailsMapping for this Metric +func (tr *Metric) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Metric +func (tr *Metric) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Metric +func (tr *Metric) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Metric +func (tr *Metric) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Metric +func (tr *Metric) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Metric +func (tr *Metric) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Metric +func (tr *Metric) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Metric +func (tr *Metric) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Metric using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Metric) LateInitialize(attrs []byte) (bool, error) { + params := &MetricParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Metric) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_metric_types.go b/apis/logs/v1alpha1/zz_metric_types.go new file mode 100755 index 0000000..a4c1fca --- /dev/null +++ b/apis/logs/v1alpha1/zz_metric_types.go @@ -0,0 +1,251 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ComputeInitParameters struct { + + // (String) The type of aggregation to use. This field can't be updated after creation. Valid values are count, distribution. + // The type of aggregation to use. This field can't be updated after creation. Valid values are `count`, `distribution`. + AggregationType *string `json:"aggregationType,omitempty" tf:"aggregation_type,omitempty"` + + // (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an aggregation_type of distribution. + // Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an `aggregation_type` of distribution. + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the log-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + Path *string `json:"path,omitempty" tf:"path,omitempty"` +} + +type ComputeObservation struct { + + // (String) The type of aggregation to use. This field can't be updated after creation. Valid values are count, distribution. + // The type of aggregation to use. This field can't be updated after creation. Valid values are `count`, `distribution`. + AggregationType *string `json:"aggregationType,omitempty" tf:"aggregation_type,omitempty"` + + // (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an aggregation_type of distribution. + // Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an `aggregation_type` of distribution. + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the log-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + Path *string `json:"path,omitempty" tf:"path,omitempty"` +} + +type ComputeParameters struct { + + // (String) The type of aggregation to use. This field can't be updated after creation. Valid values are count, distribution. + // The type of aggregation to use. This field can't be updated after creation. Valid values are `count`, `distribution`. + // +kubebuilder:validation:Optional + AggregationType *string `json:"aggregationType" tf:"aggregation_type,omitempty"` + + // (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an aggregation_type of distribution. + // Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an `aggregation_type` of distribution. + // +kubebuilder:validation:Optional + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the log-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // +kubebuilder:validation:Optional + Path *string `json:"path,omitempty" tf:"path,omitempty"` +} + +type GroupByInitParameters struct { + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the log-based metric will be aggregated over. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Name of the tag that gets created. + // Name of the tag that gets created. + TagName *string `json:"tagName,omitempty" tf:"tag_name,omitempty"` +} + +type GroupByObservation struct { + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the log-based metric will be aggregated over. + Path *string `json:"path,omitempty" tf:"path,omitempty"` + + // (String) Name of the tag that gets created. + // Name of the tag that gets created. + TagName *string `json:"tagName,omitempty" tf:"tag_name,omitempty"` +} + +type GroupByParameters struct { + + // based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + // The path to the value the log-based metric will be aggregated over. + // +kubebuilder:validation:Optional + Path *string `json:"path" tf:"path,omitempty"` + + // (String) Name of the tag that gets created. + // Name of the tag that gets created. + // +kubebuilder:validation:Optional + TagName *string `json:"tagName" tf:"tag_name,omitempty"` +} + +type MetricFilterInitParameters struct { + + // following the log search syntax. + // The search query - following the log search syntax. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type MetricFilterObservation struct { + + // following the log search syntax. + // The search query - following the log search syntax. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type MetricFilterParameters struct { + + // following the log search syntax. + // The search query - following the log search syntax. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type MetricInitParameters struct { + + // based metric. This field can't be updated after creation. (see below for nested schema) + // The compute rule to compute the log-based metric. This field can't be updated after creation. + Compute []ComputeInitParameters `json:"compute,omitempty" tf:"compute,omitempty"` + + // based metric filter. Logs matching this filter will be aggregated in this metric. (see below for nested schema) + // The log-based metric filter. Logs matching this filter will be aggregated in this metric. + Filter []MetricFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block Set) The rules for the group by. (see below for nested schema) + // The rules for the group by. + GroupBy []GroupByInitParameters `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // based metric. This field can't be updated after creation. + // The name of the log-based metric. This field can't be updated after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type MetricObservation struct { + + // based metric. This field can't be updated after creation. (see below for nested schema) + // The compute rule to compute the log-based metric. This field can't be updated after creation. + Compute []ComputeObservation `json:"compute,omitempty" tf:"compute,omitempty"` + + // based metric filter. Logs matching this filter will be aggregated in this metric. (see below for nested schema) + // The log-based metric filter. Logs matching this filter will be aggregated in this metric. + Filter []MetricFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block Set) The rules for the group by. (see below for nested schema) + // The rules for the group by. + GroupBy []GroupByObservation `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // based metric. This field can't be updated after creation. + // The name of the log-based metric. This field can't be updated after creation. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type MetricParameters struct { + + // based metric. This field can't be updated after creation. (see below for nested schema) + // The compute rule to compute the log-based metric. This field can't be updated after creation. + // +kubebuilder:validation:Optional + Compute []ComputeParameters `json:"compute,omitempty" tf:"compute,omitempty"` + + // based metric filter. Logs matching this filter will be aggregated in this metric. (see below for nested schema) + // The log-based metric filter. Logs matching this filter will be aggregated in this metric. + // +kubebuilder:validation:Optional + Filter []MetricFilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block Set) The rules for the group by. (see below for nested schema) + // The rules for the group by. + // +kubebuilder:validation:Optional + GroupBy []GroupByParameters `json:"groupBy,omitempty" tf:"group_by,omitempty"` + + // based metric. This field can't be updated after creation. + // The name of the log-based metric. This field can't be updated after creation. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +// MetricSpec defines the desired state of Metric +type MetricSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider MetricParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider MetricInitParameters `json:"initProvider,omitempty"` +} + +// MetricStatus defines the observed state of Metric. +type MetricStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider MetricObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Metric is the Schema for the Metrics API. Resource for interacting with the logs_metric API +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Metric struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.compute) || (has(self.initProvider) && has(self.initProvider.compute))",message="spec.forProvider.compute is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.filter) || (has(self.initProvider) && has(self.initProvider.filter))",message="spec.forProvider.filter is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec MetricSpec `json:"spec"` + Status MetricStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// MetricList contains a list of Metrics +type MetricList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Metric `json:"items"` +} + +// Repository type metadata. +var ( + Metric_Kind = "Metric" + Metric_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Metric_Kind}.String() + Metric_KindAPIVersion = Metric_Kind + "." + CRDGroupVersion.String() + Metric_GroupVersionKind = CRDGroupVersion.WithKind(Metric_Kind) +) + +func init() { + SchemeBuilder.Register(&Metric{}, &MetricList{}) +} diff --git a/apis/logs/v1alpha1/zz_pipelineorder_terraformed.go b/apis/logs/v1alpha1/zz_pipelineorder_terraformed.go new file mode 100755 index 0000000..b7a5ce2 --- /dev/null +++ b/apis/logs/v1alpha1/zz_pipelineorder_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this PipelineOrder +func (mg *PipelineOrder) GetTerraformResourceType() string { + return "datadog_logs_pipeline_order" +} + +// GetConnectionDetailsMapping for this PipelineOrder +func (tr *PipelineOrder) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this PipelineOrder +func (tr *PipelineOrder) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this PipelineOrder +func (tr *PipelineOrder) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this PipelineOrder +func (tr *PipelineOrder) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this PipelineOrder +func (tr *PipelineOrder) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this PipelineOrder +func (tr *PipelineOrder) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this PipelineOrder +func (tr *PipelineOrder) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this PipelineOrder +func (tr *PipelineOrder) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this PipelineOrder using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *PipelineOrder) LateInitialize(attrs []byte) (bool, error) { + params := &PipelineOrderParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *PipelineOrder) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/logs/v1alpha1/zz_pipelineorder_types.go b/apis/logs/v1alpha1/zz_pipelineorder_types.go new file mode 100755 index 0000000..52ef1bf --- /dev/null +++ b/apis/logs/v1alpha1/zz_pipelineorder_types.go @@ -0,0 +1,119 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type PipelineOrderInitParameters struct { + + // (String) The name attribute in the resource datadog_logs_pipeline_order needs to be unique. It's recommended to use the same value as the resource name. No related field is available in Logs Pipeline API. + // The name attribute in the resource `datadog_logs_pipeline_order` needs to be unique. It's recommended to use the same value as the resource name. No related field is available in [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order). + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs. + // The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs. + Pipelines []*string `json:"pipelines,omitempty" tf:"pipelines,omitempty"` +} + +type PipelineOrderObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name attribute in the resource datadog_logs_pipeline_order needs to be unique. It's recommended to use the same value as the resource name. No related field is available in Logs Pipeline API. + // The name attribute in the resource `datadog_logs_pipeline_order` needs to be unique. It's recommended to use the same value as the resource name. No related field is available in [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order). + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs. + // The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs. + Pipelines []*string `json:"pipelines,omitempty" tf:"pipelines,omitempty"` +} + +type PipelineOrderParameters struct { + + // (String) The name attribute in the resource datadog_logs_pipeline_order needs to be unique. It's recommended to use the same value as the resource name. No related field is available in Logs Pipeline API. + // The name attribute in the resource `datadog_logs_pipeline_order` needs to be unique. It's recommended to use the same value as the resource name. No related field is available in [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order). + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs. + // The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs. + // +kubebuilder:validation:Optional + Pipelines []*string `json:"pipelines,omitempty" tf:"pipelines,omitempty"` +} + +// PipelineOrderSpec defines the desired state of PipelineOrder +type PipelineOrderSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider PipelineOrderParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider PipelineOrderInitParameters `json:"initProvider,omitempty"` +} + +// PipelineOrderStatus defines the observed state of PipelineOrder. +type PipelineOrderStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider PipelineOrderObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// PipelineOrder is the Schema for the PipelineOrders API. Provides a Datadog Logs Pipeline API resource, which is used to manage Datadog log pipelines order. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type PipelineOrder struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.pipelines) || (has(self.initProvider) && has(self.initProvider.pipelines))",message="spec.forProvider.pipelines is a required parameter" + Spec PipelineOrderSpec `json:"spec"` + Status PipelineOrderStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PipelineOrderList contains a list of PipelineOrders +type PipelineOrderList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []PipelineOrder `json:"items"` +} + +// Repository type metadata. +var ( + PipelineOrder_Kind = "PipelineOrder" + PipelineOrder_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: PipelineOrder_Kind}.String() + PipelineOrder_KindAPIVersion = PipelineOrder_Kind + "." + CRDGroupVersion.String() + PipelineOrder_GroupVersionKind = CRDGroupVersion.WithKind(PipelineOrder_Kind) +) + +func init() { + SchemeBuilder.Register(&PipelineOrder{}, &PipelineOrderList{}) +} diff --git a/apis/metric/v1alpha1/zz_generated.conversion_hubs.go b/apis/metric/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..e9400b4 --- /dev/null +++ b/apis/metric/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *Metadata) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *TagConfiguration) Hub() {} diff --git a/apis/metric/v1alpha1/zz_generated.deepcopy.go b/apis/metric/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..011461f --- /dev/null +++ b/apis/metric/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,595 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AggregationsInitParameters) DeepCopyInto(out *AggregationsInitParameters) { + *out = *in + if in.Space != nil { + in, out := &in.Space, &out.Space + *out = new(string) + **out = **in + } + if in.Time != nil { + in, out := &in.Time, &out.Time + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationsInitParameters. +func (in *AggregationsInitParameters) DeepCopy() *AggregationsInitParameters { + if in == nil { + return nil + } + out := new(AggregationsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AggregationsObservation) DeepCopyInto(out *AggregationsObservation) { + *out = *in + if in.Space != nil { + in, out := &in.Space, &out.Space + *out = new(string) + **out = **in + } + if in.Time != nil { + in, out := &in.Time, &out.Time + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationsObservation. +func (in *AggregationsObservation) DeepCopy() *AggregationsObservation { + if in == nil { + return nil + } + out := new(AggregationsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AggregationsParameters) DeepCopyInto(out *AggregationsParameters) { + *out = *in + if in.Space != nil { + in, out := &in.Space, &out.Space + *out = new(string) + **out = **in + } + if in.Time != nil { + in, out := &in.Time, &out.Time + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationsParameters. +func (in *AggregationsParameters) DeepCopy() *AggregationsParameters { + if in == nil { + return nil + } + out := new(AggregationsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Metadata) DeepCopyInto(out *Metadata) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metadata. +func (in *Metadata) DeepCopy() *Metadata { + if in == nil { + return nil + } + out := new(Metadata) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Metadata) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataInitParameters) DeepCopyInto(out *MetadataInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.PerUnit != nil { + in, out := &in.PerUnit, &out.PerUnit + *out = new(string) + **out = **in + } + if in.ShortName != nil { + in, out := &in.ShortName, &out.ShortName + *out = new(string) + **out = **in + } + if in.StatsdInterval != nil { + in, out := &in.StatsdInterval, &out.StatsdInterval + *out = new(float64) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Unit != nil { + in, out := &in.Unit, &out.Unit + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataInitParameters. +func (in *MetadataInitParameters) DeepCopy() *MetadataInitParameters { + if in == nil { + return nil + } + out := new(MetadataInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataList) DeepCopyInto(out *MetadataList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Metadata, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataList. +func (in *MetadataList) DeepCopy() *MetadataList { + if in == nil { + return nil + } + out := new(MetadataList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MetadataList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataObservation) DeepCopyInto(out *MetadataObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.PerUnit != nil { + in, out := &in.PerUnit, &out.PerUnit + *out = new(string) + **out = **in + } + if in.ShortName != nil { + in, out := &in.ShortName, &out.ShortName + *out = new(string) + **out = **in + } + if in.StatsdInterval != nil { + in, out := &in.StatsdInterval, &out.StatsdInterval + *out = new(float64) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Unit != nil { + in, out := &in.Unit, &out.Unit + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataObservation. +func (in *MetadataObservation) DeepCopy() *MetadataObservation { + if in == nil { + return nil + } + out := new(MetadataObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataParameters) DeepCopyInto(out *MetadataParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.PerUnit != nil { + in, out := &in.PerUnit, &out.PerUnit + *out = new(string) + **out = **in + } + if in.ShortName != nil { + in, out := &in.ShortName, &out.ShortName + *out = new(string) + **out = **in + } + if in.StatsdInterval != nil { + in, out := &in.StatsdInterval, &out.StatsdInterval + *out = new(float64) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Unit != nil { + in, out := &in.Unit, &out.Unit + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataParameters. +func (in *MetadataParameters) DeepCopy() *MetadataParameters { + if in == nil { + return nil + } + out := new(MetadataParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataSpec) DeepCopyInto(out *MetadataSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataSpec. +func (in *MetadataSpec) DeepCopy() *MetadataSpec { + if in == nil { + return nil + } + out := new(MetadataSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataStatus) DeepCopyInto(out *MetadataStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataStatus. +func (in *MetadataStatus) DeepCopy() *MetadataStatus { + if in == nil { + return nil + } + out := new(MetadataStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagConfiguration) DeepCopyInto(out *TagConfiguration) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagConfiguration. +func (in *TagConfiguration) DeepCopy() *TagConfiguration { + if in == nil { + return nil + } + out := new(TagConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TagConfiguration) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagConfigurationInitParameters) DeepCopyInto(out *TagConfigurationInitParameters) { + *out = *in + if in.Aggregations != nil { + in, out := &in.Aggregations, &out.Aggregations + *out = make([]AggregationsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ExcludeTagsMode != nil { + in, out := &in.ExcludeTagsMode, &out.ExcludeTagsMode + *out = new(bool) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.MetricName != nil { + in, out := &in.MetricName, &out.MetricName + *out = new(string) + **out = **in + } + if in.MetricType != nil { + in, out := &in.MetricType, &out.MetricType + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagConfigurationInitParameters. +func (in *TagConfigurationInitParameters) DeepCopy() *TagConfigurationInitParameters { + if in == nil { + return nil + } + out := new(TagConfigurationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagConfigurationList) DeepCopyInto(out *TagConfigurationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]TagConfiguration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagConfigurationList. +func (in *TagConfigurationList) DeepCopy() *TagConfigurationList { + if in == nil { + return nil + } + out := new(TagConfigurationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TagConfigurationList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagConfigurationObservation) DeepCopyInto(out *TagConfigurationObservation) { + *out = *in + if in.Aggregations != nil { + in, out := &in.Aggregations, &out.Aggregations + *out = make([]AggregationsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ExcludeTagsMode != nil { + in, out := &in.ExcludeTagsMode, &out.ExcludeTagsMode + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.MetricName != nil { + in, out := &in.MetricName, &out.MetricName + *out = new(string) + **out = **in + } + if in.MetricType != nil { + in, out := &in.MetricType, &out.MetricType + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagConfigurationObservation. +func (in *TagConfigurationObservation) DeepCopy() *TagConfigurationObservation { + if in == nil { + return nil + } + out := new(TagConfigurationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagConfigurationParameters) DeepCopyInto(out *TagConfigurationParameters) { + *out = *in + if in.Aggregations != nil { + in, out := &in.Aggregations, &out.Aggregations + *out = make([]AggregationsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ExcludeTagsMode != nil { + in, out := &in.ExcludeTagsMode, &out.ExcludeTagsMode + *out = new(bool) + **out = **in + } + if in.IncludePercentiles != nil { + in, out := &in.IncludePercentiles, &out.IncludePercentiles + *out = new(bool) + **out = **in + } + if in.MetricName != nil { + in, out := &in.MetricName, &out.MetricName + *out = new(string) + **out = **in + } + if in.MetricType != nil { + in, out := &in.MetricType, &out.MetricType + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagConfigurationParameters. +func (in *TagConfigurationParameters) DeepCopy() *TagConfigurationParameters { + if in == nil { + return nil + } + out := new(TagConfigurationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagConfigurationSpec) DeepCopyInto(out *TagConfigurationSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagConfigurationSpec. +func (in *TagConfigurationSpec) DeepCopy() *TagConfigurationSpec { + if in == nil { + return nil + } + out := new(TagConfigurationSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TagConfigurationStatus) DeepCopyInto(out *TagConfigurationStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagConfigurationStatus. +func (in *TagConfigurationStatus) DeepCopy() *TagConfigurationStatus { + if in == nil { + return nil + } + out := new(TagConfigurationStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/metric/v1alpha1/zz_generated.managed.go b/apis/metric/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..46de944 --- /dev/null +++ b/apis/metric/v1alpha1/zz_generated.managed.go @@ -0,0 +1,128 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this Metadata. +func (mg *Metadata) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Metadata. +func (mg *Metadata) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Metadata. +func (mg *Metadata) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Metadata. +func (mg *Metadata) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Metadata. +func (mg *Metadata) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Metadata. +func (mg *Metadata) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Metadata. +func (mg *Metadata) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Metadata. +func (mg *Metadata) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Metadata. +func (mg *Metadata) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Metadata. +func (mg *Metadata) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Metadata. +func (mg *Metadata) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Metadata. +func (mg *Metadata) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this TagConfiguration. +func (mg *TagConfiguration) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this TagConfiguration. +func (mg *TagConfiguration) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this TagConfiguration. +func (mg *TagConfiguration) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this TagConfiguration. +func (mg *TagConfiguration) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this TagConfiguration. +func (mg *TagConfiguration) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this TagConfiguration. +func (mg *TagConfiguration) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this TagConfiguration. +func (mg *TagConfiguration) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this TagConfiguration. +func (mg *TagConfiguration) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this TagConfiguration. +func (mg *TagConfiguration) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this TagConfiguration. +func (mg *TagConfiguration) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this TagConfiguration. +func (mg *TagConfiguration) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this TagConfiguration. +func (mg *TagConfiguration) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/metric/v1alpha1/zz_generated.managedlist.go b/apis/metric/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..b4e1857 --- /dev/null +++ b/apis/metric/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,26 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this MetadataList. +func (l *MetadataList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this TagConfigurationList. +func (l *TagConfigurationList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/metric/v1alpha1/zz_groupversion_info.go b/apis/metric/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..2c5df2d --- /dev/null +++ b/apis/metric/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=metric.datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "metric.datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/metric/v1alpha1/zz_metadata_terraformed.go b/apis/metric/v1alpha1/zz_metadata_terraformed.go new file mode 100755 index 0000000..46c1cc6 --- /dev/null +++ b/apis/metric/v1alpha1/zz_metadata_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Metadata +func (mg *Metadata) GetTerraformResourceType() string { + return "datadog_metric_metadata" +} + +// GetConnectionDetailsMapping for this Metadata +func (tr *Metadata) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Metadata +func (tr *Metadata) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Metadata +func (tr *Metadata) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Metadata +func (tr *Metadata) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Metadata +func (tr *Metadata) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Metadata +func (tr *Metadata) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Metadata +func (tr *Metadata) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Metadata +func (tr *Metadata) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Metadata using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Metadata) LateInitialize(attrs []byte) (bool, error) { + params := &MetadataParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Metadata) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/metric/v1alpha1/zz_metadata_types.go b/apis/metric/v1alpha1/zz_metadata_types.go new file mode 100755 index 0000000..cc32260 --- /dev/null +++ b/apis/metric/v1alpha1/zz_metadata_types.go @@ -0,0 +1,183 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type MetadataInitParameters struct { + + // (String) A description of the metric. + // A description of the metric. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The name of the metric. + // The name of the metric. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (String) Per unit of the metric such as second in bytes per second. + // Per unit of the metric such as `second` in `bytes per second`. + PerUnit *string `json:"perUnit,omitempty" tf:"per_unit,omitempty"` + + // (String) A short name of the metric. + // A short name of the metric. + ShortName *string `json:"shortName,omitempty" tf:"short_name,omitempty"` + + // (Number) If applicable, statsd flush interval in seconds for the metric. + // If applicable, statsd flush interval in seconds for the metric. + StatsdInterval *float64 `json:"statsdInterval,omitempty" tf:"statsd_interval,omitempty"` + + // (String) Metric type such as count, gauge, or rate. Updating a metric of type distribution is not supported. If you would like to see the distribution type returned, contact Datadog support. + // Metric type such as `count`, `gauge`, or `rate`. Updating a metric of type `distribution` is not supported. If you would like to see the `distribution` type returned, contact [Datadog support](https://docs.datadoghq.com/help/). + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) Primary unit of the metric such as byte or operation. + // Primary unit of the metric such as `byte` or `operation`. + Unit *string `json:"unit,omitempty" tf:"unit,omitempty"` +} + +type MetadataObservation struct { + + // (String) A description of the metric. + // A description of the metric. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the metric. + // The name of the metric. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (String) Per unit of the metric such as second in bytes per second. + // Per unit of the metric such as `second` in `bytes per second`. + PerUnit *string `json:"perUnit,omitempty" tf:"per_unit,omitempty"` + + // (String) A short name of the metric. + // A short name of the metric. + ShortName *string `json:"shortName,omitempty" tf:"short_name,omitempty"` + + // (Number) If applicable, statsd flush interval in seconds for the metric. + // If applicable, statsd flush interval in seconds for the metric. + StatsdInterval *float64 `json:"statsdInterval,omitempty" tf:"statsd_interval,omitempty"` + + // (String) Metric type such as count, gauge, or rate. Updating a metric of type distribution is not supported. If you would like to see the distribution type returned, contact Datadog support. + // Metric type such as `count`, `gauge`, or `rate`. Updating a metric of type `distribution` is not supported. If you would like to see the `distribution` type returned, contact [Datadog support](https://docs.datadoghq.com/help/). + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) Primary unit of the metric such as byte or operation. + // Primary unit of the metric such as `byte` or `operation`. + Unit *string `json:"unit,omitempty" tf:"unit,omitempty"` +} + +type MetadataParameters struct { + + // (String) A description of the metric. + // A description of the metric. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The name of the metric. + // The name of the metric. + // +kubebuilder:validation:Optional + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (String) Per unit of the metric such as second in bytes per second. + // Per unit of the metric such as `second` in `bytes per second`. + // +kubebuilder:validation:Optional + PerUnit *string `json:"perUnit,omitempty" tf:"per_unit,omitempty"` + + // (String) A short name of the metric. + // A short name of the metric. + // +kubebuilder:validation:Optional + ShortName *string `json:"shortName,omitempty" tf:"short_name,omitempty"` + + // (Number) If applicable, statsd flush interval in seconds for the metric. + // If applicable, statsd flush interval in seconds for the metric. + // +kubebuilder:validation:Optional + StatsdInterval *float64 `json:"statsdInterval,omitempty" tf:"statsd_interval,omitempty"` + + // (String) Metric type such as count, gauge, or rate. Updating a metric of type distribution is not supported. If you would like to see the distribution type returned, contact Datadog support. + // Metric type such as `count`, `gauge`, or `rate`. Updating a metric of type `distribution` is not supported. If you would like to see the `distribution` type returned, contact [Datadog support](https://docs.datadoghq.com/help/). + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) Primary unit of the metric such as byte or operation. + // Primary unit of the metric such as `byte` or `operation`. + // +kubebuilder:validation:Optional + Unit *string `json:"unit,omitempty" tf:"unit,omitempty"` +} + +// MetadataSpec defines the desired state of Metadata +type MetadataSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider MetadataParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider MetadataInitParameters `json:"initProvider,omitempty"` +} + +// MetadataStatus defines the observed state of Metadata. +type MetadataStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider MetadataObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Metadata is the Schema for the Metadatas API. Provides a Datadog metric_metadata resource. This can be used to manage a metric's metadata. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Metadata struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.metric) || (has(self.initProvider) && has(self.initProvider.metric))",message="spec.forProvider.metric is a required parameter" + Spec MetadataSpec `json:"spec"` + Status MetadataStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// MetadataList contains a list of Metadatas +type MetadataList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Metadata `json:"items"` +} + +// Repository type metadata. +var ( + Metadata_Kind = "Metadata" + Metadata_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Metadata_Kind}.String() + Metadata_KindAPIVersion = Metadata_Kind + "." + CRDGroupVersion.String() + Metadata_GroupVersionKind = CRDGroupVersion.WithKind(Metadata_Kind) +) + +func init() { + SchemeBuilder.Register(&Metadata{}, &MetadataList{}) +} diff --git a/apis/metric/v1alpha1/zz_tagconfiguration_terraformed.go b/apis/metric/v1alpha1/zz_tagconfiguration_terraformed.go new file mode 100755 index 0000000..ac9d0b3 --- /dev/null +++ b/apis/metric/v1alpha1/zz_tagconfiguration_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this TagConfiguration +func (mg *TagConfiguration) GetTerraformResourceType() string { + return "datadog_metric_tag_configuration" +} + +// GetConnectionDetailsMapping for this TagConfiguration +func (tr *TagConfiguration) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this TagConfiguration +func (tr *TagConfiguration) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this TagConfiguration +func (tr *TagConfiguration) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this TagConfiguration +func (tr *TagConfiguration) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this TagConfiguration +func (tr *TagConfiguration) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this TagConfiguration +func (tr *TagConfiguration) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this TagConfiguration +func (tr *TagConfiguration) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this TagConfiguration +func (tr *TagConfiguration) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this TagConfiguration using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *TagConfiguration) LateInitialize(attrs []byte) (bool, error) { + params := &TagConfigurationParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *TagConfiguration) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/metric/v1alpha1/zz_tagconfiguration_types.go b/apis/metric/v1alpha1/zz_tagconfiguration_types.go new file mode 100755 index 0000000..967588f --- /dev/null +++ b/apis/metric/v1alpha1/zz_tagconfiguration_types.go @@ -0,0 +1,210 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AggregationsInitParameters struct { + + // (String) A space aggregation for use in query. Valid values are avg, max, min, sum. + // A space aggregation for use in query. Valid values are `avg`, `max`, `min`, `sum`. + Space *string `json:"space,omitempty" tf:"space,omitempty"` + + // (String) A time aggregation for use in query. Valid values are avg, count, max, min, sum. + // A time aggregation for use in query. Valid values are `avg`, `count`, `max`, `min`, `sum`. + Time *string `json:"time,omitempty" tf:"time,omitempty"` +} + +type AggregationsObservation struct { + + // (String) A space aggregation for use in query. Valid values are avg, max, min, sum. + // A space aggregation for use in query. Valid values are `avg`, `max`, `min`, `sum`. + Space *string `json:"space,omitempty" tf:"space,omitempty"` + + // (String) A time aggregation for use in query. Valid values are avg, count, max, min, sum. + // A time aggregation for use in query. Valid values are `avg`, `count`, `max`, `min`, `sum`. + Time *string `json:"time,omitempty" tf:"time,omitempty"` +} + +type AggregationsParameters struct { + + // (String) A space aggregation for use in query. Valid values are avg, max, min, sum. + // A space aggregation for use in query. Valid values are `avg`, `max`, `min`, `sum`. + // +kubebuilder:validation:Optional + Space *string `json:"space" tf:"space,omitempty"` + + // (String) A time aggregation for use in query. Valid values are avg, count, max, min, sum. + // A time aggregation for use in query. Valid values are `avg`, `count`, `max`, `min`, `sum`. + // +kubebuilder:validation:Optional + Time *string `json:"time" tf:"time,omitempty"` +} + +type TagConfigurationInitParameters struct { + + // (Block Set) A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a metric_type of count, rate, or gauge. (see below for nested schema) + // A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a `metric_type` of count, rate, or gauge. + Aggregations []AggregationsInitParameters `json:"aggregations,omitempty" tf:"aggregations,omitempty"` + + // (Boolean) Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to false. + // Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to `false`. + ExcludeTagsMode *bool `json:"excludeTagsMode,omitempty" tf:"exclude_tags_mode,omitempty"` + + // (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a metric_type of distribution. + // Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a `metric_type` of distribution. + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // (String) The metric name for this resource. + // The metric name for this resource. + MetricName *string `json:"metricName,omitempty" tf:"metric_name,omitempty"` + + // (String) The metric's type. This field can't be updated after creation. Valid values are gauge, count, rate, distribution. + // The metric's type. This field can't be updated after creation. Valid values are `gauge`, `count`, `rate`, `distribution`. + MetricType *string `json:"metricType,omitempty" tf:"metric_type,omitempty"` + + // (Set of String) A list of tag keys that will be queryable for your metric. + // A list of tag keys that will be queryable for your metric. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type TagConfigurationObservation struct { + + // (Block Set) A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a metric_type of count, rate, or gauge. (see below for nested schema) + // A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a `metric_type` of count, rate, or gauge. + Aggregations []AggregationsObservation `json:"aggregations,omitempty" tf:"aggregations,omitempty"` + + // (Boolean) Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to false. + // Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to `false`. + ExcludeTagsMode *bool `json:"excludeTagsMode,omitempty" tf:"exclude_tags_mode,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a metric_type of distribution. + // Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a `metric_type` of distribution. + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // (String) The metric name for this resource. + // The metric name for this resource. + MetricName *string `json:"metricName,omitempty" tf:"metric_name,omitempty"` + + // (String) The metric's type. This field can't be updated after creation. Valid values are gauge, count, rate, distribution. + // The metric's type. This field can't be updated after creation. Valid values are `gauge`, `count`, `rate`, `distribution`. + MetricType *string `json:"metricType,omitempty" tf:"metric_type,omitempty"` + + // (Set of String) A list of tag keys that will be queryable for your metric. + // A list of tag keys that will be queryable for your metric. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type TagConfigurationParameters struct { + + // (Block Set) A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a metric_type of count, rate, or gauge. (see below for nested schema) + // A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a `metric_type` of count, rate, or gauge. + // +kubebuilder:validation:Optional + Aggregations []AggregationsParameters `json:"aggregations,omitempty" tf:"aggregations,omitempty"` + + // (Boolean) Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to false. + // Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to `false`. + // +kubebuilder:validation:Optional + ExcludeTagsMode *bool `json:"excludeTagsMode,omitempty" tf:"exclude_tags_mode,omitempty"` + + // (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a metric_type of distribution. + // Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a `metric_type` of distribution. + // +kubebuilder:validation:Optional + IncludePercentiles *bool `json:"includePercentiles,omitempty" tf:"include_percentiles,omitempty"` + + // (String) The metric name for this resource. + // The metric name for this resource. + // +kubebuilder:validation:Optional + MetricName *string `json:"metricName,omitempty" tf:"metric_name,omitempty"` + + // (String) The metric's type. This field can't be updated after creation. Valid values are gauge, count, rate, distribution. + // The metric's type. This field can't be updated after creation. Valid values are `gauge`, `count`, `rate`, `distribution`. + // +kubebuilder:validation:Optional + MetricType *string `json:"metricType,omitempty" tf:"metric_type,omitempty"` + + // (Set of String) A list of tag keys that will be queryable for your metric. + // A list of tag keys that will be queryable for your metric. + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +// TagConfigurationSpec defines the desired state of TagConfiguration +type TagConfigurationSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider TagConfigurationParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider TagConfigurationInitParameters `json:"initProvider,omitempty"` +} + +// TagConfigurationStatus defines the observed state of TagConfiguration. +type TagConfigurationStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider TagConfigurationObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// TagConfiguration is the Schema for the TagConfigurations API. Provides a Datadog metric tag configuration resource. This can be used to modify tag configurations for metrics. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type TagConfiguration struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.metricName) || (has(self.initProvider) && has(self.initProvider.metricName))",message="spec.forProvider.metricName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.metricType) || (has(self.initProvider) && has(self.initProvider.metricType))",message="spec.forProvider.metricType is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.tags) || (has(self.initProvider) && has(self.initProvider.tags))",message="spec.forProvider.tags is a required parameter" + Spec TagConfigurationSpec `json:"spec"` + Status TagConfigurationStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// TagConfigurationList contains a list of TagConfigurations +type TagConfigurationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []TagConfiguration `json:"items"` +} + +// Repository type metadata. +var ( + TagConfiguration_Kind = "TagConfiguration" + TagConfiguration_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: TagConfiguration_Kind}.String() + TagConfiguration_KindAPIVersion = TagConfiguration_Kind + "." + CRDGroupVersion.String() + TagConfiguration_GroupVersionKind = CRDGroupVersion.WithKind(TagConfiguration_Kind) +) + +func init() { + SchemeBuilder.Register(&TagConfiguration{}, &TagConfigurationList{}) +} diff --git a/apis/null/v1alpha1/zz_generated.deepcopy.go b/apis/null/v1alpha1/zz_generated.deepcopy.go deleted file mode 100644 index 1af19ad..0000000 --- a/apis/null/v1alpha1/zz_generated.deepcopy.go +++ /dev/null @@ -1,205 +0,0 @@ -//go:build !ignore_autogenerated - -/* -Copyright 2022 Upbound Inc. -*/ - -// Code generated by controller-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - runtime "k8s.io/apimachinery/pkg/runtime" -) - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Resource) DeepCopyInto(out *Resource) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Resource. -func (in *Resource) DeepCopy() *Resource { - if in == nil { - return nil - } - out := new(Resource) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Resource) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ResourceInitParameters) DeepCopyInto(out *ResourceInitParameters) { - *out = *in - if in.Triggers != nil { - in, out := &in.Triggers, &out.Triggers - *out = make(map[string]*string, len(*in)) - for key, val := range *in { - var outVal *string - if val == nil { - (*out)[key] = nil - } else { - inVal := (*in)[key] - in, out := &inVal, &outVal - *out = new(string) - **out = **in - } - (*out)[key] = outVal - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceInitParameters. -func (in *ResourceInitParameters) DeepCopy() *ResourceInitParameters { - if in == nil { - return nil - } - out := new(ResourceInitParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ResourceList) DeepCopyInto(out *ResourceList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Resource, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceList. -func (in *ResourceList) DeepCopy() *ResourceList { - if in == nil { - return nil - } - out := new(ResourceList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *ResourceList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ResourceObservation) DeepCopyInto(out *ResourceObservation) { - *out = *in - if in.ID != nil { - in, out := &in.ID, &out.ID - *out = new(string) - **out = **in - } - if in.Triggers != nil { - in, out := &in.Triggers, &out.Triggers - *out = make(map[string]*string, len(*in)) - for key, val := range *in { - var outVal *string - if val == nil { - (*out)[key] = nil - } else { - inVal := (*in)[key] - in, out := &inVal, &outVal - *out = new(string) - **out = **in - } - (*out)[key] = outVal - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceObservation. -func (in *ResourceObservation) DeepCopy() *ResourceObservation { - if in == nil { - return nil - } - out := new(ResourceObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ResourceParameters) DeepCopyInto(out *ResourceParameters) { - *out = *in - if in.Triggers != nil { - in, out := &in.Triggers, &out.Triggers - *out = make(map[string]*string, len(*in)) - for key, val := range *in { - var outVal *string - if val == nil { - (*out)[key] = nil - } else { - inVal := (*in)[key] - in, out := &inVal, &outVal - *out = new(string) - **out = **in - } - (*out)[key] = outVal - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceParameters. -func (in *ResourceParameters) DeepCopy() *ResourceParameters { - if in == nil { - return nil - } - out := new(ResourceParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ResourceSpec) DeepCopyInto(out *ResourceSpec) { - *out = *in - in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) - in.ForProvider.DeepCopyInto(&out.ForProvider) - in.InitProvider.DeepCopyInto(&out.InitProvider) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSpec. -func (in *ResourceSpec) DeepCopy() *ResourceSpec { - if in == nil { - return nil - } - out := new(ResourceSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ResourceStatus) DeepCopyInto(out *ResourceStatus) { - *out = *in - in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) - in.AtProvider.DeepCopyInto(&out.AtProvider) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceStatus. -func (in *ResourceStatus) DeepCopy() *ResourceStatus { - if in == nil { - return nil - } - out := new(ResourceStatus) - in.DeepCopyInto(out) - return out -} diff --git a/apis/null/v1alpha1/zz_generated.managed.go b/apis/null/v1alpha1/zz_generated.managed.go deleted file mode 100644 index 74df9c5..0000000 --- a/apis/null/v1alpha1/zz_generated.managed.go +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright 2022 Upbound Inc. -*/ -// Code generated by angryjet. DO NOT EDIT. - -package v1alpha1 - -import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" - -// GetCondition of this Resource. -func (mg *Resource) GetCondition(ct xpv1.ConditionType) xpv1.Condition { - return mg.Status.GetCondition(ct) -} - -// GetDeletionPolicy of this Resource. -func (mg *Resource) GetDeletionPolicy() xpv1.DeletionPolicy { - return mg.Spec.DeletionPolicy -} - -// GetManagementPolicies of this Resource. -func (mg *Resource) GetManagementPolicies() xpv1.ManagementPolicies { - return mg.Spec.ManagementPolicies -} - -// GetProviderConfigReference of this Resource. -func (mg *Resource) GetProviderConfigReference() *xpv1.Reference { - return mg.Spec.ProviderConfigReference -} - -// GetPublishConnectionDetailsTo of this Resource. -func (mg *Resource) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { - return mg.Spec.PublishConnectionDetailsTo -} - -// GetWriteConnectionSecretToReference of this Resource. -func (mg *Resource) GetWriteConnectionSecretToReference() *xpv1.SecretReference { - return mg.Spec.WriteConnectionSecretToReference -} - -// SetConditions of this Resource. -func (mg *Resource) SetConditions(c ...xpv1.Condition) { - mg.Status.SetConditions(c...) -} - -// SetDeletionPolicy of this Resource. -func (mg *Resource) SetDeletionPolicy(r xpv1.DeletionPolicy) { - mg.Spec.DeletionPolicy = r -} - -// SetManagementPolicies of this Resource. -func (mg *Resource) SetManagementPolicies(r xpv1.ManagementPolicies) { - mg.Spec.ManagementPolicies = r -} - -// SetProviderConfigReference of this Resource. -func (mg *Resource) SetProviderConfigReference(r *xpv1.Reference) { - mg.Spec.ProviderConfigReference = r -} - -// SetPublishConnectionDetailsTo of this Resource. -func (mg *Resource) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { - mg.Spec.PublishConnectionDetailsTo = r -} - -// SetWriteConnectionSecretToReference of this Resource. -func (mg *Resource) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { - mg.Spec.WriteConnectionSecretToReference = r -} diff --git a/apis/null/v1alpha1/zz_generated.managedlist.go b/apis/null/v1alpha1/zz_generated.managedlist.go deleted file mode 100644 index c589209..0000000 --- a/apis/null/v1alpha1/zz_generated.managedlist.go +++ /dev/null @@ -1,17 +0,0 @@ -/* -Copyright 2022 Upbound Inc. -*/ -// Code generated by angryjet. DO NOT EDIT. - -package v1alpha1 - -import resource "github.com/crossplane/crossplane-runtime/pkg/resource" - -// GetItems of this ResourceList. -func (l *ResourceList) GetItems() []resource.Managed { - items := make([]resource.Managed, len(l.Items)) - for i := range l.Items { - items[i] = &l.Items[i] - } - return items -} diff --git a/apis/null/v1alpha1/zz_generated_terraformed.go b/apis/null/v1alpha1/zz_generated_terraformed.go deleted file mode 100755 index 3c32037..0000000 --- a/apis/null/v1alpha1/zz_generated_terraformed.go +++ /dev/null @@ -1,102 +0,0 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - -/* -Copyright 2022 Upbound Inc. -*/ - -// Code generated by upjet. DO NOT EDIT. - -package v1alpha1 - -import ( - "github.com/pkg/errors" - - "github.com/crossplane/upjet/pkg/resource" - "github.com/crossplane/upjet/pkg/resource/json" -) - -// GetTerraformResourceType returns Terraform resource type for this Resource -func (mg *Resource) GetTerraformResourceType() string { - return "null_resource" -} - -// GetConnectionDetailsMapping for this Resource -func (tr *Resource) GetConnectionDetailsMapping() map[string]string { - return nil -} - -// GetObservation of this Resource -func (tr *Resource) GetObservation() (map[string]any, error) { - o, err := json.TFParser.Marshal(tr.Status.AtProvider) - if err != nil { - return nil, err - } - base := map[string]any{} - return base, json.TFParser.Unmarshal(o, &base) -} - -// SetObservation for this Resource -func (tr *Resource) SetObservation(obs map[string]any) error { - p, err := json.TFParser.Marshal(obs) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) -} - -// GetID returns ID of underlying Terraform resource of this Resource -func (tr *Resource) GetID() string { - if tr.Status.AtProvider.ID == nil { - return "" - } - return *tr.Status.AtProvider.ID -} - -// GetParameters of this Resource -func (tr *Resource) GetParameters() (map[string]any, error) { - p, err := json.TFParser.Marshal(tr.Spec.ForProvider) - if err != nil { - return nil, err - } - base := map[string]any{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// SetParameters for this Resource -func (tr *Resource) SetParameters(params map[string]any) error { - p, err := json.TFParser.Marshal(params) - if err != nil { - return err - } - return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) -} - -// GetInitParameters of this Resource -func (tr *Resource) GetInitParameters() (map[string]any, error) { - p, err := json.TFParser.Marshal(tr.Spec.InitProvider) - if err != nil { - return nil, err - } - base := map[string]any{} - return base, json.TFParser.Unmarshal(p, &base) -} - -// LateInitialize this Resource using its observed tfState. -// returns True if there are any spec changes for the resource. -func (tr *Resource) LateInitialize(attrs []byte) (bool, error) { - params := &ResourceParameters{} - if err := json.TFParser.Unmarshal(attrs, params); err != nil { - return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") - } - opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} - - li := resource.NewGenericLateInitializer(opts...) - return li.LateInitialize(&tr.Spec.ForProvider, params) -} - -// GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *Resource) GetTerraformSchemaVersion() int { - return 0 -} diff --git a/apis/securitymonitoring/v1alpha1/zz_defaultrule_terraformed.go b/apis/securitymonitoring/v1alpha1/zz_defaultrule_terraformed.go new file mode 100755 index 0000000..ea4d473 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_defaultrule_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this DefaultRule +func (mg *DefaultRule) GetTerraformResourceType() string { + return "datadog_security_monitoring_default_rule" +} + +// GetConnectionDetailsMapping for this DefaultRule +func (tr *DefaultRule) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this DefaultRule +func (tr *DefaultRule) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this DefaultRule +func (tr *DefaultRule) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this DefaultRule +func (tr *DefaultRule) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this DefaultRule +func (tr *DefaultRule) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this DefaultRule +func (tr *DefaultRule) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this DefaultRule +func (tr *DefaultRule) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this DefaultRule +func (tr *DefaultRule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this DefaultRule using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *DefaultRule) LateInitialize(attrs []byte) (bool, error) { + params := &DefaultRuleParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *DefaultRule) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/securitymonitoring/v1alpha1/zz_defaultrule_types.go b/apis/securitymonitoring/v1alpha1/zz_defaultrule_types.go new file mode 100755 index 0000000..7c03fe1 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_defaultrule_types.go @@ -0,0 +1,239 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type CaseInitParameters struct { + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Status of the rule case to match. Valid values are info, low, medium, high, critical. + // Status of the rule case to match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type CaseObservation struct { + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Status of the rule case to match. Valid values are info, low, medium, high, critical. + // Status of the rule case to match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type CaseParameters struct { + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + // +kubebuilder:validation:Optional + Notifications []*string `json:"notifications" tf:"notifications,omitempty"` + + // (String) Status of the rule case to match. Valid values are info, low, medium, high, critical. + // Status of the rule case to match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + // +kubebuilder:validation:Optional + Status *string `json:"status" tf:"status,omitempty"` +} + +type DefaultRuleInitParameters struct { + + // (Block List, Max: 10) Cases of the rule, this is used to update notifications. (see below for nested schema) + // Cases of the rule, this is used to update notifications. + Case []CaseInitParameters `json:"case,omitempty" tf:"case,omitempty"` + + // (Boolean) Enable the rule. Defaults to true. + // Enable the rule. Defaults to `true`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + // Additional queries to filter matched events before they are processed. + Filter []FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block List, Max: 1) Options on default rules. Note that only a subset of fields can be updated on default rule options. (see below for nested schema) + // Options on default rules. Note that only a subset of fields can be updated on default rule options. + Options []OptionsInitParameters `json:"options,omitempty" tf:"options,omitempty"` +} + +type DefaultRuleObservation struct { + + // (Block List, Max: 10) Cases of the rule, this is used to update notifications. (see below for nested schema) + // Cases of the rule, this is used to update notifications. + Case []CaseObservation `json:"case,omitempty" tf:"case,omitempty"` + + // (Boolean) Enable the rule. Defaults to true. + // Enable the rule. Defaults to `true`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + // Additional queries to filter matched events before they are processed. + Filter []FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Block List, Max: 1) Options on default rules. Note that only a subset of fields can be updated on default rule options. (see below for nested schema) + // Options on default rules. Note that only a subset of fields can be updated on default rule options. + Options []OptionsObservation `json:"options,omitempty" tf:"options,omitempty"` + + // (String) The rule type. + // The rule type. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type DefaultRuleParameters struct { + + // (Block List, Max: 10) Cases of the rule, this is used to update notifications. (see below for nested schema) + // Cases of the rule, this is used to update notifications. + // +kubebuilder:validation:Optional + Case []CaseParameters `json:"case,omitempty" tf:"case,omitempty"` + + // (Boolean) Enable the rule. Defaults to true. + // Enable the rule. Defaults to `true`. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + // Additional queries to filter matched events before they are processed. + // +kubebuilder:validation:Optional + Filter []FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Block List, Max: 1) Options on default rules. Note that only a subset of fields can be updated on default rule options. (see below for nested schema) + // Options on default rules. Note that only a subset of fields can be updated on default rule options. + // +kubebuilder:validation:Optional + Options []OptionsParameters `json:"options,omitempty" tf:"options,omitempty"` +} + +type FilterInitParameters struct { + + // (String) The type of filtering action. Allowed enum values: require, suppress Valid values are require, suppress. + // The type of filtering action. Allowed enum values: require, suppress Valid values are `require`, `suppress`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (String) Query for selecting logs to apply the filtering action. + // Query for selecting logs to apply the filtering action. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterObservation struct { + + // (String) The type of filtering action. Allowed enum values: require, suppress Valid values are require, suppress. + // The type of filtering action. Allowed enum values: require, suppress Valid values are `require`, `suppress`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (String) Query for selecting logs to apply the filtering action. + // Query for selecting logs to apply the filtering action. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterParameters struct { + + // (String) The type of filtering action. Allowed enum values: require, suppress Valid values are require, suppress. + // The type of filtering action. Allowed enum values: require, suppress Valid values are `require`, `suppress`. + // +kubebuilder:validation:Optional + Action *string `json:"action" tf:"action,omitempty"` + + // (String) Query for selecting logs to apply the filtering action. + // Query for selecting logs to apply the filtering action. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type OptionsInitParameters struct { + + // production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + // If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. + DecreaseCriticalityBasedOnEnv *bool `json:"decreaseCriticalityBasedOnEnv,omitempty" tf:"decrease_criticality_based_on_env,omitempty"` +} + +type OptionsObservation struct { + + // production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + // If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. + DecreaseCriticalityBasedOnEnv *bool `json:"decreaseCriticalityBasedOnEnv,omitempty" tf:"decrease_criticality_based_on_env,omitempty"` +} + +type OptionsParameters struct { + + // production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + // If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. + // +kubebuilder:validation:Optional + DecreaseCriticalityBasedOnEnv *bool `json:"decreaseCriticalityBasedOnEnv,omitempty" tf:"decrease_criticality_based_on_env,omitempty"` +} + +// DefaultRuleSpec defines the desired state of DefaultRule +type DefaultRuleSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider DefaultRuleParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider DefaultRuleInitParameters `json:"initProvider,omitempty"` +} + +// DefaultRuleStatus defines the observed state of DefaultRule. +type DefaultRuleStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider DefaultRuleObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// DefaultRule is the Schema for the DefaultRules API. Provides a Datadog Security Monitoring Rule API resource for default rules. It can only be imported, you can't create a default rule. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type DefaultRule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec DefaultRuleSpec `json:"spec"` + Status DefaultRuleStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// DefaultRuleList contains a list of DefaultRules +type DefaultRuleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []DefaultRule `json:"items"` +} + +// Repository type metadata. +var ( + DefaultRule_Kind = "DefaultRule" + DefaultRule_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: DefaultRule_Kind}.String() + DefaultRule_KindAPIVersion = DefaultRule_Kind + "." + CRDGroupVersion.String() + DefaultRule_GroupVersionKind = CRDGroupVersion.WithKind(DefaultRule_Kind) +) + +func init() { + SchemeBuilder.Register(&DefaultRule{}, &DefaultRuleList{}) +} diff --git a/apis/securitymonitoring/v1alpha1/zz_filter_terraformed.go b/apis/securitymonitoring/v1alpha1/zz_filter_terraformed.go new file mode 100755 index 0000000..d7828bb --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_filter_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Filter +func (mg *Filter) GetTerraformResourceType() string { + return "datadog_security_monitoring_filter" +} + +// GetConnectionDetailsMapping for this Filter +func (tr *Filter) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Filter +func (tr *Filter) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Filter +func (tr *Filter) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Filter +func (tr *Filter) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Filter +func (tr *Filter) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Filter +func (tr *Filter) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Filter +func (tr *Filter) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Filter +func (tr *Filter) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Filter using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Filter) LateInitialize(attrs []byte) (bool, error) { + params := &FilterParameters_2{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Filter) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/securitymonitoring/v1alpha1/zz_filter_types.go b/apis/securitymonitoring/v1alpha1/zz_filter_types.go new file mode 100755 index 0000000..0c616a1 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_filter_types.go @@ -0,0 +1,198 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ExclusionFilterInitParameters struct { + + // (String) The name of the security filter. + // Exclusion filter name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The query of the security filter. + // Exclusion filter query. Logs that match this query are excluded from the security filter. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type ExclusionFilterObservation struct { + + // (String) The name of the security filter. + // Exclusion filter name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The query of the security filter. + // Exclusion filter query. Logs that match this query are excluded from the security filter. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type ExclusionFilterParameters struct { + + // (String) The name of the security filter. + // Exclusion filter name. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (String) The query of the security filter. + // Exclusion filter query. Logs that match this query are excluded from the security filter. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type FilterInitParameters_2 struct { + + // (Block List) Exclusion filters to exclude some logs from the security filter. (see below for nested schema) + // Exclusion filters to exclude some logs from the security filter. + ExclusionFilter []ExclusionFilterInitParameters `json:"exclusionFilter,omitempty" tf:"exclusion_filter,omitempty"` + + // (String) The filtered data type. Valid values are logs. Defaults to "logs". + // The filtered data type. Valid values are `logs`. Defaults to `"logs"`. + FilteredDataType *string `json:"filteredDataType,omitempty" tf:"filtered_data_type,omitempty"` + + // (Boolean) Whether the security filter is enabled. + // Whether the security filter is enabled. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) The name of the security filter. + // The name of the security filter. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The query of the security filter. + // The query of the security filter. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterObservation_2 struct { + + // (Block List) Exclusion filters to exclude some logs from the security filter. (see below for nested schema) + // Exclusion filters to exclude some logs from the security filter. + ExclusionFilter []ExclusionFilterObservation `json:"exclusionFilter,omitempty" tf:"exclusion_filter,omitempty"` + + // (String) The filtered data type. Valid values are logs. Defaults to "logs". + // The filtered data type. Valid values are `logs`. Defaults to `"logs"`. + FilteredDataType *string `json:"filteredDataType,omitempty" tf:"filtered_data_type,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Boolean) Whether the security filter is enabled. + // Whether the security filter is enabled. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) The name of the security filter. + // The name of the security filter. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The query of the security filter. + // The query of the security filter. + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The version of the security filter. + // The version of the security filter. + Version *float64 `json:"version,omitempty" tf:"version,omitempty"` +} + +type FilterParameters_2 struct { + + // (Block List) Exclusion filters to exclude some logs from the security filter. (see below for nested schema) + // Exclusion filters to exclude some logs from the security filter. + // +kubebuilder:validation:Optional + ExclusionFilter []ExclusionFilterParameters `json:"exclusionFilter,omitempty" tf:"exclusion_filter,omitempty"` + + // (String) The filtered data type. Valid values are logs. Defaults to "logs". + // The filtered data type. Valid values are `logs`. Defaults to `"logs"`. + // +kubebuilder:validation:Optional + FilteredDataType *string `json:"filteredDataType,omitempty" tf:"filtered_data_type,omitempty"` + + // (Boolean) Whether the security filter is enabled. + // Whether the security filter is enabled. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) The name of the security filter. + // The name of the security filter. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The query of the security filter. + // The query of the security filter. + // +kubebuilder:validation:Optional + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +// FilterSpec defines the desired state of Filter +type FilterSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider FilterParameters_2 `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider FilterInitParameters_2 `json:"initProvider,omitempty"` +} + +// FilterStatus defines the observed state of Filter. +type FilterStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider FilterObservation_2 `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Filter is the Schema for the Filters API. Provides a Datadog Security Monitoring Rule API resource for security filters. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Filter struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.isEnabled) || (has(self.initProvider) && has(self.initProvider.isEnabled))",message="spec.forProvider.isEnabled is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.query) || (has(self.initProvider) && has(self.initProvider.query))",message="spec.forProvider.query is a required parameter" + Spec FilterSpec `json:"spec"` + Status FilterStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// FilterList contains a list of Filters +type FilterList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Filter `json:"items"` +} + +// Repository type metadata. +var ( + Filter_Kind = "Filter" + Filter_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Filter_Kind}.String() + Filter_KindAPIVersion = Filter_Kind + "." + CRDGroupVersion.String() + Filter_GroupVersionKind = CRDGroupVersion.WithKind(Filter_Kind) +) + +func init() { + SchemeBuilder.Register(&Filter{}, &FilterList{}) +} diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.conversion_hubs.go b/apis/securitymonitoring/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..71223ed --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *DefaultRule) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Filter) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Rule) Hub() {} diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.deepcopy.go b/apis/securitymonitoring/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..e190fdb --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,2495 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AgentRuleInitParameters) DeepCopyInto(out *AgentRuleInitParameters) { + *out = *in + if in.AgentRuleID != nil { + in, out := &in.AgentRuleID, &out.AgentRuleID + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuleInitParameters. +func (in *AgentRuleInitParameters) DeepCopy() *AgentRuleInitParameters { + if in == nil { + return nil + } + out := new(AgentRuleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AgentRuleObservation) DeepCopyInto(out *AgentRuleObservation) { + *out = *in + if in.AgentRuleID != nil { + in, out := &in.AgentRuleID, &out.AgentRuleID + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuleObservation. +func (in *AgentRuleObservation) DeepCopy() *AgentRuleObservation { + if in == nil { + return nil + } + out := new(AgentRuleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AgentRuleParameters) DeepCopyInto(out *AgentRuleParameters) { + *out = *in + if in.AgentRuleID != nil { + in, out := &in.AgentRuleID, &out.AgentRuleID + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuleParameters. +func (in *AgentRuleParameters) DeepCopy() *AgentRuleParameters { + if in == nil { + return nil + } + out := new(AgentRuleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CaseInitParameters) DeepCopyInto(out *CaseInitParameters) { + *out = *in + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CaseInitParameters. +func (in *CaseInitParameters) DeepCopy() *CaseInitParameters { + if in == nil { + return nil + } + out := new(CaseInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CaseObservation) DeepCopyInto(out *CaseObservation) { + *out = *in + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CaseObservation. +func (in *CaseObservation) DeepCopy() *CaseObservation { + if in == nil { + return nil + } + out := new(CaseObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CaseParameters) DeepCopyInto(out *CaseParameters) { + *out = *in + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CaseParameters. +func (in *CaseParameters) DeepCopy() *CaseParameters { + if in == nil { + return nil + } + out := new(CaseParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultRule) DeepCopyInto(out *DefaultRule) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultRule. +func (in *DefaultRule) DeepCopy() *DefaultRule { + if in == nil { + return nil + } + out := new(DefaultRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DefaultRule) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultRuleInitParameters) DeepCopyInto(out *DefaultRuleInitParameters) { + *out = *in + if in.Case != nil { + in, out := &in.Case, &out.Case + *out = make([]CaseInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]OptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultRuleInitParameters. +func (in *DefaultRuleInitParameters) DeepCopy() *DefaultRuleInitParameters { + if in == nil { + return nil + } + out := new(DefaultRuleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultRuleList) DeepCopyInto(out *DefaultRuleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DefaultRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultRuleList. +func (in *DefaultRuleList) DeepCopy() *DefaultRuleList { + if in == nil { + return nil + } + out := new(DefaultRuleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DefaultRuleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultRuleObservation) DeepCopyInto(out *DefaultRuleObservation) { + *out = *in + if in.Case != nil { + in, out := &in.Case, &out.Case + *out = make([]CaseObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]OptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultRuleObservation. +func (in *DefaultRuleObservation) DeepCopy() *DefaultRuleObservation { + if in == nil { + return nil + } + out := new(DefaultRuleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultRuleParameters) DeepCopyInto(out *DefaultRuleParameters) { + *out = *in + if in.Case != nil { + in, out := &in.Case, &out.Case + *out = make([]CaseParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]OptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultRuleParameters. +func (in *DefaultRuleParameters) DeepCopy() *DefaultRuleParameters { + if in == nil { + return nil + } + out := new(DefaultRuleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultRuleSpec) DeepCopyInto(out *DefaultRuleSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultRuleSpec. +func (in *DefaultRuleSpec) DeepCopy() *DefaultRuleSpec { + if in == nil { + return nil + } + out := new(DefaultRuleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultRuleStatus) DeepCopyInto(out *DefaultRuleStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultRuleStatus. +func (in *DefaultRuleStatus) DeepCopy() *DefaultRuleStatus { + if in == nil { + return nil + } + out := new(DefaultRuleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterInitParameters) DeepCopyInto(out *ExclusionFilterInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterInitParameters. +func (in *ExclusionFilterInitParameters) DeepCopy() *ExclusionFilterInitParameters { + if in == nil { + return nil + } + out := new(ExclusionFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterObservation) DeepCopyInto(out *ExclusionFilterObservation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterObservation. +func (in *ExclusionFilterObservation) DeepCopy() *ExclusionFilterObservation { + if in == nil { + return nil + } + out := new(ExclusionFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExclusionFilterParameters) DeepCopyInto(out *ExclusionFilterParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExclusionFilterParameters. +func (in *ExclusionFilterParameters) DeepCopy() *ExclusionFilterParameters { + if in == nil { + return nil + } + out := new(ExclusionFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Filter) DeepCopyInto(out *Filter) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Filter. +func (in *Filter) DeepCopy() *Filter { + if in == nil { + return nil + } + out := new(Filter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Filter) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters) DeepCopyInto(out *FilterInitParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters. +func (in *FilterInitParameters) DeepCopy() *FilterInitParameters { + if in == nil { + return nil + } + out := new(FilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters_2) DeepCopyInto(out *FilterInitParameters_2) { + *out = *in + if in.ExclusionFilter != nil { + in, out := &in.ExclusionFilter, &out.ExclusionFilter + *out = make([]ExclusionFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.FilteredDataType != nil { + in, out := &in.FilteredDataType, &out.FilteredDataType + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters_2. +func (in *FilterInitParameters_2) DeepCopy() *FilterInitParameters_2 { + if in == nil { + return nil + } + out := new(FilterInitParameters_2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterList) DeepCopyInto(out *FilterList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Filter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterList. +func (in *FilterList) DeepCopy() *FilterList { + if in == nil { + return nil + } + out := new(FilterList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FilterList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation) DeepCopyInto(out *FilterObservation) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation. +func (in *FilterObservation) DeepCopy() *FilterObservation { + if in == nil { + return nil + } + out := new(FilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation_2) DeepCopyInto(out *FilterObservation_2) { + *out = *in + if in.ExclusionFilter != nil { + in, out := &in.ExclusionFilter, &out.ExclusionFilter + *out = make([]ExclusionFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.FilteredDataType != nil { + in, out := &in.FilteredDataType, &out.FilteredDataType + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation_2. +func (in *FilterObservation_2) DeepCopy() *FilterObservation_2 { + if in == nil { + return nil + } + out := new(FilterObservation_2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters) DeepCopyInto(out *FilterParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters. +func (in *FilterParameters) DeepCopy() *FilterParameters { + if in == nil { + return nil + } + out := new(FilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters_2) DeepCopyInto(out *FilterParameters_2) { + *out = *in + if in.ExclusionFilter != nil { + in, out := &in.ExclusionFilter, &out.ExclusionFilter + *out = make([]ExclusionFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.FilteredDataType != nil { + in, out := &in.FilteredDataType, &out.FilteredDataType + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters_2. +func (in *FilterParameters_2) DeepCopy() *FilterParameters_2 { + if in == nil { + return nil + } + out := new(FilterParameters_2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterSpec) DeepCopyInto(out *FilterSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterSpec. +func (in *FilterSpec) DeepCopy() *FilterSpec { + if in == nil { + return nil + } + out := new(FilterSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterStatus) DeepCopyInto(out *FilterStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterStatus. +func (in *FilterStatus) DeepCopy() *FilterStatus { + if in == nil { + return nil + } + out := new(FilterStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImpossibleTravelOptionsInitParameters) DeepCopyInto(out *ImpossibleTravelOptionsInitParameters) { + *out = *in + if in.BaselineUserLocations != nil { + in, out := &in.BaselineUserLocations, &out.BaselineUserLocations + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImpossibleTravelOptionsInitParameters. +func (in *ImpossibleTravelOptionsInitParameters) DeepCopy() *ImpossibleTravelOptionsInitParameters { + if in == nil { + return nil + } + out := new(ImpossibleTravelOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImpossibleTravelOptionsObservation) DeepCopyInto(out *ImpossibleTravelOptionsObservation) { + *out = *in + if in.BaselineUserLocations != nil { + in, out := &in.BaselineUserLocations, &out.BaselineUserLocations + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImpossibleTravelOptionsObservation. +func (in *ImpossibleTravelOptionsObservation) DeepCopy() *ImpossibleTravelOptionsObservation { + if in == nil { + return nil + } + out := new(ImpossibleTravelOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImpossibleTravelOptionsParameters) DeepCopyInto(out *ImpossibleTravelOptionsParameters) { + *out = *in + if in.BaselineUserLocations != nil { + in, out := &in.BaselineUserLocations, &out.BaselineUserLocations + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImpossibleTravelOptionsParameters. +func (in *ImpossibleTravelOptionsParameters) DeepCopy() *ImpossibleTravelOptionsParameters { + if in == nil { + return nil + } + out := new(ImpossibleTravelOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NewValueOptionsInitParameters) DeepCopyInto(out *NewValueOptionsInitParameters) { + *out = *in + if in.ForgetAfter != nil { + in, out := &in.ForgetAfter, &out.ForgetAfter + *out = new(float64) + **out = **in + } + if in.LearningDuration != nil { + in, out := &in.LearningDuration, &out.LearningDuration + *out = new(float64) + **out = **in + } + if in.LearningMethod != nil { + in, out := &in.LearningMethod, &out.LearningMethod + *out = new(string) + **out = **in + } + if in.LearningThreshold != nil { + in, out := &in.LearningThreshold, &out.LearningThreshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NewValueOptionsInitParameters. +func (in *NewValueOptionsInitParameters) DeepCopy() *NewValueOptionsInitParameters { + if in == nil { + return nil + } + out := new(NewValueOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NewValueOptionsObservation) DeepCopyInto(out *NewValueOptionsObservation) { + *out = *in + if in.ForgetAfter != nil { + in, out := &in.ForgetAfter, &out.ForgetAfter + *out = new(float64) + **out = **in + } + if in.LearningDuration != nil { + in, out := &in.LearningDuration, &out.LearningDuration + *out = new(float64) + **out = **in + } + if in.LearningMethod != nil { + in, out := &in.LearningMethod, &out.LearningMethod + *out = new(string) + **out = **in + } + if in.LearningThreshold != nil { + in, out := &in.LearningThreshold, &out.LearningThreshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NewValueOptionsObservation. +func (in *NewValueOptionsObservation) DeepCopy() *NewValueOptionsObservation { + if in == nil { + return nil + } + out := new(NewValueOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NewValueOptionsParameters) DeepCopyInto(out *NewValueOptionsParameters) { + *out = *in + if in.ForgetAfter != nil { + in, out := &in.ForgetAfter, &out.ForgetAfter + *out = new(float64) + **out = **in + } + if in.LearningDuration != nil { + in, out := &in.LearningDuration, &out.LearningDuration + *out = new(float64) + **out = **in + } + if in.LearningMethod != nil { + in, out := &in.LearningMethod, &out.LearningMethod + *out = new(string) + **out = **in + } + if in.LearningThreshold != nil { + in, out := &in.LearningThreshold, &out.LearningThreshold + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NewValueOptionsParameters. +func (in *NewValueOptionsParameters) DeepCopy() *NewValueOptionsParameters { + if in == nil { + return nil + } + out := new(NewValueOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsInitParameters) DeepCopyInto(out *OptionsInitParameters) { + *out = *in + if in.DecreaseCriticalityBasedOnEnv != nil { + in, out := &in.DecreaseCriticalityBasedOnEnv, &out.DecreaseCriticalityBasedOnEnv + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsInitParameters. +func (in *OptionsInitParameters) DeepCopy() *OptionsInitParameters { + if in == nil { + return nil + } + out := new(OptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsObservation) DeepCopyInto(out *OptionsObservation) { + *out = *in + if in.DecreaseCriticalityBasedOnEnv != nil { + in, out := &in.DecreaseCriticalityBasedOnEnv, &out.DecreaseCriticalityBasedOnEnv + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsObservation. +func (in *OptionsObservation) DeepCopy() *OptionsObservation { + if in == nil { + return nil + } + out := new(OptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsParameters) DeepCopyInto(out *OptionsParameters) { + *out = *in + if in.DecreaseCriticalityBasedOnEnv != nil { + in, out := &in.DecreaseCriticalityBasedOnEnv, &out.DecreaseCriticalityBasedOnEnv + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsParameters. +func (in *OptionsParameters) DeepCopy() *OptionsParameters { + if in == nil { + return nil + } + out := new(OptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryInitParameters) DeepCopyInto(out *QueryInitParameters) { + *out = *in + if in.AgentRule != nil { + in, out := &in.AgentRule, &out.AgentRule + *out = make([]AgentRuleInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.DistinctFields != nil { + in, out := &in.DistinctFields, &out.DistinctFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GroupByFields != nil { + in, out := &in.GroupByFields, &out.GroupByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryInitParameters. +func (in *QueryInitParameters) DeepCopy() *QueryInitParameters { + if in == nil { + return nil + } + out := new(QueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryObservation) DeepCopyInto(out *QueryObservation) { + *out = *in + if in.AgentRule != nil { + in, out := &in.AgentRule, &out.AgentRule + *out = make([]AgentRuleObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.DistinctFields != nil { + in, out := &in.DistinctFields, &out.DistinctFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GroupByFields != nil { + in, out := &in.GroupByFields, &out.GroupByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryObservation. +func (in *QueryObservation) DeepCopy() *QueryObservation { + if in == nil { + return nil + } + out := new(QueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryParameters) DeepCopyInto(out *QueryParameters) { + *out = *in + if in.AgentRule != nil { + in, out := &in.AgentRule, &out.AgentRule + *out = make([]AgentRuleParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.DistinctFields != nil { + in, out := &in.DistinctFields, &out.DistinctFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GroupByFields != nil { + in, out := &in.GroupByFields, &out.GroupByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Metric != nil { + in, out := &in.Metric, &out.Metric + *out = new(string) + **out = **in + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryParameters. +func (in *QueryParameters) DeepCopy() *QueryParameters { + if in == nil { + return nil + } + out := new(QueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RootQueryInitParameters) DeepCopyInto(out *RootQueryInitParameters) { + *out = *in + if in.GroupByFields != nil { + in, out := &in.GroupByFields, &out.GroupByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootQueryInitParameters. +func (in *RootQueryInitParameters) DeepCopy() *RootQueryInitParameters { + if in == nil { + return nil + } + out := new(RootQueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RootQueryObservation) DeepCopyInto(out *RootQueryObservation) { + *out = *in + if in.GroupByFields != nil { + in, out := &in.GroupByFields, &out.GroupByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootQueryObservation. +func (in *RootQueryObservation) DeepCopy() *RootQueryObservation { + if in == nil { + return nil + } + out := new(RootQueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RootQueryParameters) DeepCopyInto(out *RootQueryParameters) { + *out = *in + if in.GroupByFields != nil { + in, out := &in.GroupByFields, &out.GroupByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootQueryParameters. +func (in *RootQueryParameters) DeepCopy() *RootQueryParameters { + if in == nil { + return nil + } + out := new(RootQueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Rule) DeepCopyInto(out *Rule) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rule. +func (in *Rule) DeepCopy() *Rule { + if in == nil { + return nil + } + out := new(Rule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Rule) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleCaseInitParameters) DeepCopyInto(out *RuleCaseInitParameters) { + *out = *in + if in.Condition != nil { + in, out := &in.Condition, &out.Condition + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleCaseInitParameters. +func (in *RuleCaseInitParameters) DeepCopy() *RuleCaseInitParameters { + if in == nil { + return nil + } + out := new(RuleCaseInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleCaseObservation) DeepCopyInto(out *RuleCaseObservation) { + *out = *in + if in.Condition != nil { + in, out := &in.Condition, &out.Condition + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleCaseObservation. +func (in *RuleCaseObservation) DeepCopy() *RuleCaseObservation { + if in == nil { + return nil + } + out := new(RuleCaseObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleCaseParameters) DeepCopyInto(out *RuleCaseParameters) { + *out = *in + if in.Condition != nil { + in, out := &in.Condition, &out.Condition + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleCaseParameters. +func (in *RuleCaseParameters) DeepCopy() *RuleCaseParameters { + if in == nil { + return nil + } + out := new(RuleCaseParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleFilterInitParameters) DeepCopyInto(out *RuleFilterInitParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleFilterInitParameters. +func (in *RuleFilterInitParameters) DeepCopy() *RuleFilterInitParameters { + if in == nil { + return nil + } + out := new(RuleFilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleFilterObservation) DeepCopyInto(out *RuleFilterObservation) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleFilterObservation. +func (in *RuleFilterObservation) DeepCopy() *RuleFilterObservation { + if in == nil { + return nil + } + out := new(RuleFilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleFilterParameters) DeepCopyInto(out *RuleFilterParameters) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleFilterParameters. +func (in *RuleFilterParameters) DeepCopy() *RuleFilterParameters { + if in == nil { + return nil + } + out := new(RuleFilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { + *out = *in + if in.Case != nil { + in, out := &in.Case, &out.Case + *out = make([]RuleCaseInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]RuleFilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.HasExtendedTitle != nil { + in, out := &in.HasExtendedTitle, &out.HasExtendedTitle + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]RuleOptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SignalQuery != nil { + in, out := &in.SignalQuery, &out.SignalQuery + *out = make([]SignalQueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ThirdPartyCase != nil { + in, out := &in.ThirdPartyCase, &out.ThirdPartyCase + *out = make([]ThirdPartyCaseInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleInitParameters. +func (in *RuleInitParameters) DeepCopy() *RuleInitParameters { + if in == nil { + return nil + } + out := new(RuleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleList) DeepCopyInto(out *RuleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Rule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleList. +func (in *RuleList) DeepCopy() *RuleList { + if in == nil { + return nil + } + out := new(RuleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RuleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { + *out = *in + if in.Case != nil { + in, out := &in.Case, &out.Case + *out = make([]RuleCaseObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]RuleFilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.HasExtendedTitle != nil { + in, out := &in.HasExtendedTitle, &out.HasExtendedTitle + *out = new(bool) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]RuleOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SignalQuery != nil { + in, out := &in.SignalQuery, &out.SignalQuery + *out = make([]SignalQueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ThirdPartyCase != nil { + in, out := &in.ThirdPartyCase, &out.ThirdPartyCase + *out = make([]ThirdPartyCaseObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleObservation. +func (in *RuleObservation) DeepCopy() *RuleObservation { + if in == nil { + return nil + } + out := new(RuleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleOptionsInitParameters) DeepCopyInto(out *RuleOptionsInitParameters) { + *out = *in + if in.DecreaseCriticalityBasedOnEnv != nil { + in, out := &in.DecreaseCriticalityBasedOnEnv, &out.DecreaseCriticalityBasedOnEnv + *out = new(bool) + **out = **in + } + if in.DetectionMethod != nil { + in, out := &in.DetectionMethod, &out.DetectionMethod + *out = new(string) + **out = **in + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = new(float64) + **out = **in + } + if in.ImpossibleTravelOptions != nil { + in, out := &in.ImpossibleTravelOptions, &out.ImpossibleTravelOptions + *out = make([]ImpossibleTravelOptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.KeepAlive != nil { + in, out := &in.KeepAlive, &out.KeepAlive + *out = new(float64) + **out = **in + } + if in.MaxSignalDuration != nil { + in, out := &in.MaxSignalDuration, &out.MaxSignalDuration + *out = new(float64) + **out = **in + } + if in.NewValueOptions != nil { + in, out := &in.NewValueOptions, &out.NewValueOptions + *out = make([]NewValueOptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ThirdPartyRuleOptions != nil { + in, out := &in.ThirdPartyRuleOptions, &out.ThirdPartyRuleOptions + *out = make([]ThirdPartyRuleOptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleOptionsInitParameters. +func (in *RuleOptionsInitParameters) DeepCopy() *RuleOptionsInitParameters { + if in == nil { + return nil + } + out := new(RuleOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleOptionsObservation) DeepCopyInto(out *RuleOptionsObservation) { + *out = *in + if in.DecreaseCriticalityBasedOnEnv != nil { + in, out := &in.DecreaseCriticalityBasedOnEnv, &out.DecreaseCriticalityBasedOnEnv + *out = new(bool) + **out = **in + } + if in.DetectionMethod != nil { + in, out := &in.DetectionMethod, &out.DetectionMethod + *out = new(string) + **out = **in + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = new(float64) + **out = **in + } + if in.ImpossibleTravelOptions != nil { + in, out := &in.ImpossibleTravelOptions, &out.ImpossibleTravelOptions + *out = make([]ImpossibleTravelOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.KeepAlive != nil { + in, out := &in.KeepAlive, &out.KeepAlive + *out = new(float64) + **out = **in + } + if in.MaxSignalDuration != nil { + in, out := &in.MaxSignalDuration, &out.MaxSignalDuration + *out = new(float64) + **out = **in + } + if in.NewValueOptions != nil { + in, out := &in.NewValueOptions, &out.NewValueOptions + *out = make([]NewValueOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ThirdPartyRuleOptions != nil { + in, out := &in.ThirdPartyRuleOptions, &out.ThirdPartyRuleOptions + *out = make([]ThirdPartyRuleOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleOptionsObservation. +func (in *RuleOptionsObservation) DeepCopy() *RuleOptionsObservation { + if in == nil { + return nil + } + out := new(RuleOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleOptionsParameters) DeepCopyInto(out *RuleOptionsParameters) { + *out = *in + if in.DecreaseCriticalityBasedOnEnv != nil { + in, out := &in.DecreaseCriticalityBasedOnEnv, &out.DecreaseCriticalityBasedOnEnv + *out = new(bool) + **out = **in + } + if in.DetectionMethod != nil { + in, out := &in.DetectionMethod, &out.DetectionMethod + *out = new(string) + **out = **in + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = new(float64) + **out = **in + } + if in.ImpossibleTravelOptions != nil { + in, out := &in.ImpossibleTravelOptions, &out.ImpossibleTravelOptions + *out = make([]ImpossibleTravelOptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.KeepAlive != nil { + in, out := &in.KeepAlive, &out.KeepAlive + *out = new(float64) + **out = **in + } + if in.MaxSignalDuration != nil { + in, out := &in.MaxSignalDuration, &out.MaxSignalDuration + *out = new(float64) + **out = **in + } + if in.NewValueOptions != nil { + in, out := &in.NewValueOptions, &out.NewValueOptions + *out = make([]NewValueOptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ThirdPartyRuleOptions != nil { + in, out := &in.ThirdPartyRuleOptions, &out.ThirdPartyRuleOptions + *out = make([]ThirdPartyRuleOptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleOptionsParameters. +func (in *RuleOptionsParameters) DeepCopy() *RuleOptionsParameters { + if in == nil { + return nil + } + out := new(RuleOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { + *out = *in + if in.Case != nil { + in, out := &in.Case, &out.Case + *out = make([]RuleCaseParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]RuleFilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.HasExtendedTitle != nil { + in, out := &in.HasExtendedTitle, &out.HasExtendedTitle + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]RuleOptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = make([]QueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SignalQuery != nil { + in, out := &in.SignalQuery, &out.SignalQuery + *out = make([]SignalQueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ThirdPartyCase != nil { + in, out := &in.ThirdPartyCase, &out.ThirdPartyCase + *out = make([]ThirdPartyCaseParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleParameters. +func (in *RuleParameters) DeepCopy() *RuleParameters { + if in == nil { + return nil + } + out := new(RuleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleSpec) DeepCopyInto(out *RuleSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleSpec. +func (in *RuleSpec) DeepCopy() *RuleSpec { + if in == nil { + return nil + } + out := new(RuleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleStatus) DeepCopyInto(out *RuleStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleStatus. +func (in *RuleStatus) DeepCopy() *RuleStatus { + if in == nil { + return nil + } + out := new(RuleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalQueryInitParameters) DeepCopyInto(out *SignalQueryInitParameters) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.CorrelatedByFields != nil { + in, out := &in.CorrelatedByFields, &out.CorrelatedByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.CorrelatedQueryIndex != nil { + in, out := &in.CorrelatedQueryIndex, &out.CorrelatedQueryIndex + *out = new(string) + **out = **in + } + if in.DefaultRuleID != nil { + in, out := &in.DefaultRuleID, &out.DefaultRuleID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.RuleID != nil { + in, out := &in.RuleID, &out.RuleID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalQueryInitParameters. +func (in *SignalQueryInitParameters) DeepCopy() *SignalQueryInitParameters { + if in == nil { + return nil + } + out := new(SignalQueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalQueryObservation) DeepCopyInto(out *SignalQueryObservation) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.CorrelatedByFields != nil { + in, out := &in.CorrelatedByFields, &out.CorrelatedByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.CorrelatedQueryIndex != nil { + in, out := &in.CorrelatedQueryIndex, &out.CorrelatedQueryIndex + *out = new(string) + **out = **in + } + if in.DefaultRuleID != nil { + in, out := &in.DefaultRuleID, &out.DefaultRuleID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.RuleID != nil { + in, out := &in.RuleID, &out.RuleID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalQueryObservation. +func (in *SignalQueryObservation) DeepCopy() *SignalQueryObservation { + if in == nil { + return nil + } + out := new(SignalQueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalQueryParameters) DeepCopyInto(out *SignalQueryParameters) { + *out = *in + if in.Aggregation != nil { + in, out := &in.Aggregation, &out.Aggregation + *out = new(string) + **out = **in + } + if in.CorrelatedByFields != nil { + in, out := &in.CorrelatedByFields, &out.CorrelatedByFields + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.CorrelatedQueryIndex != nil { + in, out := &in.CorrelatedQueryIndex, &out.CorrelatedQueryIndex + *out = new(string) + **out = **in + } + if in.DefaultRuleID != nil { + in, out := &in.DefaultRuleID, &out.DefaultRuleID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.RuleID != nil { + in, out := &in.RuleID, &out.RuleID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalQueryParameters. +func (in *SignalQueryParameters) DeepCopy() *SignalQueryParameters { + if in == nil { + return nil + } + out := new(SignalQueryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyCaseInitParameters) DeepCopyInto(out *ThirdPartyCaseInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyCaseInitParameters. +func (in *ThirdPartyCaseInitParameters) DeepCopy() *ThirdPartyCaseInitParameters { + if in == nil { + return nil + } + out := new(ThirdPartyCaseInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyCaseObservation) DeepCopyInto(out *ThirdPartyCaseObservation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyCaseObservation. +func (in *ThirdPartyCaseObservation) DeepCopy() *ThirdPartyCaseObservation { + if in == nil { + return nil + } + out := new(ThirdPartyCaseObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyCaseParameters) DeepCopyInto(out *ThirdPartyCaseParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Notifications != nil { + in, out := &in.Notifications, &out.Notifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyCaseParameters. +func (in *ThirdPartyCaseParameters) DeepCopy() *ThirdPartyCaseParameters { + if in == nil { + return nil + } + out := new(ThirdPartyCaseParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyRuleOptionsInitParameters) DeepCopyInto(out *ThirdPartyRuleOptionsInitParameters) { + *out = *in + if in.DefaultNotifications != nil { + in, out := &in.DefaultNotifications, &out.DefaultNotifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.DefaultStatus != nil { + in, out := &in.DefaultStatus, &out.DefaultStatus + *out = new(string) + **out = **in + } + if in.RootQuery != nil { + in, out := &in.RootQuery, &out.RootQuery + *out = make([]RootQueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SignalTitleTemplate != nil { + in, out := &in.SignalTitleTemplate, &out.SignalTitleTemplate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyRuleOptionsInitParameters. +func (in *ThirdPartyRuleOptionsInitParameters) DeepCopy() *ThirdPartyRuleOptionsInitParameters { + if in == nil { + return nil + } + out := new(ThirdPartyRuleOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyRuleOptionsObservation) DeepCopyInto(out *ThirdPartyRuleOptionsObservation) { + *out = *in + if in.DefaultNotifications != nil { + in, out := &in.DefaultNotifications, &out.DefaultNotifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.DefaultStatus != nil { + in, out := &in.DefaultStatus, &out.DefaultStatus + *out = new(string) + **out = **in + } + if in.RootQuery != nil { + in, out := &in.RootQuery, &out.RootQuery + *out = make([]RootQueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SignalTitleTemplate != nil { + in, out := &in.SignalTitleTemplate, &out.SignalTitleTemplate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyRuleOptionsObservation. +func (in *ThirdPartyRuleOptionsObservation) DeepCopy() *ThirdPartyRuleOptionsObservation { + if in == nil { + return nil + } + out := new(ThirdPartyRuleOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyRuleOptionsParameters) DeepCopyInto(out *ThirdPartyRuleOptionsParameters) { + *out = *in + if in.DefaultNotifications != nil { + in, out := &in.DefaultNotifications, &out.DefaultNotifications + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.DefaultStatus != nil { + in, out := &in.DefaultStatus, &out.DefaultStatus + *out = new(string) + **out = **in + } + if in.RootQuery != nil { + in, out := &in.RootQuery, &out.RootQuery + *out = make([]RootQueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SignalTitleTemplate != nil { + in, out := &in.SignalTitleTemplate, &out.SignalTitleTemplate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyRuleOptionsParameters. +func (in *ThirdPartyRuleOptionsParameters) DeepCopy() *ThirdPartyRuleOptionsParameters { + if in == nil { + return nil + } + out := new(ThirdPartyRuleOptionsParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.managed.go b/apis/securitymonitoring/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..ab90d23 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_generated.managed.go @@ -0,0 +1,188 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this DefaultRule. +func (mg *DefaultRule) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this DefaultRule. +func (mg *DefaultRule) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this DefaultRule. +func (mg *DefaultRule) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this DefaultRule. +func (mg *DefaultRule) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this DefaultRule. +func (mg *DefaultRule) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this DefaultRule. +func (mg *DefaultRule) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this DefaultRule. +func (mg *DefaultRule) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this DefaultRule. +func (mg *DefaultRule) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this DefaultRule. +func (mg *DefaultRule) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this DefaultRule. +func (mg *DefaultRule) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this DefaultRule. +func (mg *DefaultRule) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this DefaultRule. +func (mg *DefaultRule) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Filter. +func (mg *Filter) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Filter. +func (mg *Filter) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Filter. +func (mg *Filter) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Filter. +func (mg *Filter) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Filter. +func (mg *Filter) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Filter. +func (mg *Filter) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Filter. +func (mg *Filter) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Filter. +func (mg *Filter) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Filter. +func (mg *Filter) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Filter. +func (mg *Filter) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Filter. +func (mg *Filter) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Filter. +func (mg *Filter) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Rule. +func (mg *Rule) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Rule. +func (mg *Rule) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Rule. +func (mg *Rule) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Rule. +func (mg *Rule) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Rule. +func (mg *Rule) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Rule. +func (mg *Rule) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Rule. +func (mg *Rule) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Rule. +func (mg *Rule) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Rule. +func (mg *Rule) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Rule. +func (mg *Rule) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Rule. +func (mg *Rule) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Rule. +func (mg *Rule) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.managedlist.go b/apis/securitymonitoring/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..6771889 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,35 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this DefaultRuleList. +func (l *DefaultRuleList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this FilterList. +func (l *FilterList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this RuleList. +func (l *RuleList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/securitymonitoring/v1alpha1/zz_groupversion_info.go b/apis/securitymonitoring/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..bf8e2a3 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=securitymonitoring.datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "securitymonitoring.datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/securitymonitoring/v1alpha1/zz_rule_terraformed.go b/apis/securitymonitoring/v1alpha1/zz_rule_terraformed.go new file mode 100755 index 0000000..f939eb4 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_rule_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Rule +func (mg *Rule) GetTerraformResourceType() string { + return "datadog_security_monitoring_rule" +} + +// GetConnectionDetailsMapping for this Rule +func (tr *Rule) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Rule +func (tr *Rule) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Rule +func (tr *Rule) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Rule +func (tr *Rule) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Rule +func (tr *Rule) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Rule +func (tr *Rule) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Rule +func (tr *Rule) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Rule +func (tr *Rule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Rule using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Rule) LateInitialize(attrs []byte) (bool, error) { + params := &RuleParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Rule) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/securitymonitoring/v1alpha1/zz_rule_types.go b/apis/securitymonitoring/v1alpha1/zz_rule_types.go new file mode 100755 index 0000000..aa45ba3 --- /dev/null +++ b/apis/securitymonitoring/v1alpha1/zz_rule_types.go @@ -0,0 +1,936 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AgentRuleInitParameters struct { + + // (String) Deprecated. It won't be applied anymore. + // **Deprecated**. It won't be applied anymore. + AgentRuleID *string `json:"agentRuleId,omitempty" tf:"agent_rule_id,omitempty"` + + // (String) Deprecated. It won't be applied anymore. + // **Deprecated**. It won't be applied anymore. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` +} + +type AgentRuleObservation struct { + + // (String) Deprecated. It won't be applied anymore. + // **Deprecated**. It won't be applied anymore. + AgentRuleID *string `json:"agentRuleId,omitempty" tf:"agent_rule_id,omitempty"` + + // (String) Deprecated. It won't be applied anymore. + // **Deprecated**. It won't be applied anymore. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` +} + +type AgentRuleParameters struct { + + // (String) Deprecated. It won't be applied anymore. + // **Deprecated**. It won't be applied anymore. + // +kubebuilder:validation:Optional + AgentRuleID *string `json:"agentRuleId" tf:"agent_rule_id,omitempty"` + + // (String) Deprecated. It won't be applied anymore. + // **Deprecated**. It won't be applied anymore. + // +kubebuilder:validation:Optional + Expression *string `json:"expression" tf:"expression,omitempty"` +} + +type ImpossibleTravelOptionsInitParameters struct { + + // (Boolean) If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to false. + // If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to `false`. + BaselineUserLocations *bool `json:"baselineUserLocations,omitempty" tf:"baseline_user_locations,omitempty"` +} + +type ImpossibleTravelOptionsObservation struct { + + // (Boolean) If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to false. + // If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to `false`. + BaselineUserLocations *bool `json:"baselineUserLocations,omitempty" tf:"baseline_user_locations,omitempty"` +} + +type ImpossibleTravelOptionsParameters struct { + + // (Boolean) If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to false. + // If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to `false`. + // +kubebuilder:validation:Optional + BaselineUserLocations *bool `json:"baselineUserLocations,omitempty" tf:"baseline_user_locations,omitempty"` +} + +type NewValueOptionsInitParameters struct { + + // (Number) The duration in days after which a learned value is forgotten. Valid values are 1, 2, 7, 14, 21, 28. + // The duration in days after which a learned value is forgotten. Valid values are `1`, `2`, `7`, `14`, `21`, `28`. + ForgetAfter *float64 `json:"forgetAfter,omitempty" tf:"forget_after,omitempty"` + + // (Number) The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are 0, 1, 7. Defaults to 1. + // The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are `0`, `1`, `7`. Defaults to `1`. + LearningDuration *float64 `json:"learningDuration,omitempty" tf:"learning_duration,omitempty"` + + // (String) The learning method used to determine when signals should be generated for values that weren't learned. Valid values are duration, threshold. Defaults to "duration". + // The learning method used to determine when signals should be generated for values that weren't learned. Valid values are `duration`, `threshold`. Defaults to `"duration"`. + LearningMethod *string `json:"learningMethod,omitempty" tf:"learning_method,omitempty"` + + // (Number) A number of occurrences after which signals are generated for values that weren't learned. Valid values are 0, 1. Defaults to 0. + // A number of occurrences after which signals are generated for values that weren't learned. Valid values are `0`, `1`. Defaults to `0`. + LearningThreshold *float64 `json:"learningThreshold,omitempty" tf:"learning_threshold,omitempty"` +} + +type NewValueOptionsObservation struct { + + // (Number) The duration in days after which a learned value is forgotten. Valid values are 1, 2, 7, 14, 21, 28. + // The duration in days after which a learned value is forgotten. Valid values are `1`, `2`, `7`, `14`, `21`, `28`. + ForgetAfter *float64 `json:"forgetAfter,omitempty" tf:"forget_after,omitempty"` + + // (Number) The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are 0, 1, 7. Defaults to 1. + // The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are `0`, `1`, `7`. Defaults to `1`. + LearningDuration *float64 `json:"learningDuration,omitempty" tf:"learning_duration,omitempty"` + + // (String) The learning method used to determine when signals should be generated for values that weren't learned. Valid values are duration, threshold. Defaults to "duration". + // The learning method used to determine when signals should be generated for values that weren't learned. Valid values are `duration`, `threshold`. Defaults to `"duration"`. + LearningMethod *string `json:"learningMethod,omitempty" tf:"learning_method,omitempty"` + + // (Number) A number of occurrences after which signals are generated for values that weren't learned. Valid values are 0, 1. Defaults to 0. + // A number of occurrences after which signals are generated for values that weren't learned. Valid values are `0`, `1`. Defaults to `0`. + LearningThreshold *float64 `json:"learningThreshold,omitempty" tf:"learning_threshold,omitempty"` +} + +type NewValueOptionsParameters struct { + + // (Number) The duration in days after which a learned value is forgotten. Valid values are 1, 2, 7, 14, 21, 28. + // The duration in days after which a learned value is forgotten. Valid values are `1`, `2`, `7`, `14`, `21`, `28`. + // +kubebuilder:validation:Optional + ForgetAfter *float64 `json:"forgetAfter" tf:"forget_after,omitempty"` + + // (Number) The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are 0, 1, 7. Defaults to 1. + // The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are `0`, `1`, `7`. Defaults to `1`. + // +kubebuilder:validation:Optional + LearningDuration *float64 `json:"learningDuration,omitempty" tf:"learning_duration,omitempty"` + + // (String) The learning method used to determine when signals should be generated for values that weren't learned. Valid values are duration, threshold. Defaults to "duration". + // The learning method used to determine when signals should be generated for values that weren't learned. Valid values are `duration`, `threshold`. Defaults to `"duration"`. + // +kubebuilder:validation:Optional + LearningMethod *string `json:"learningMethod,omitempty" tf:"learning_method,omitempty"` + + // (Number) A number of occurrences after which signals are generated for values that weren't learned. Valid values are 0, 1. Defaults to 0. + // A number of occurrences after which signals are generated for values that weren't learned. Valid values are `0`, `1`. Defaults to `0`. + // +kubebuilder:validation:Optional + LearningThreshold *float64 `json:"learningThreshold,omitempty" tf:"learning_threshold,omitempty"` +} + +type QueryInitParameters struct { + + // (Block List, Deprecated) Deprecated. It won't be applied anymore. Deprecated. agent_rule has been deprecated in favor of new Agent Rule resource. (see below for nested schema) + // **Deprecated**. It won't be applied anymore. **Deprecated.** `agent_rule` has been deprecated in favor of new Agent Rule resource. + AgentRule []AgentRuleInitParameters `json:"agentRule,omitempty" tf:"agent_rule,omitempty"` + + // (String) The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are count, cardinality, sum, max, new_value, geo_data, event_count, none. Defaults to "count". + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `"count"`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (List of String) Field for which the cardinality is measured. Sent as an array. + // Field for which the cardinality is measured. Sent as an array. + DistinctFields []*string `json:"distinctFields,omitempty" tf:"distinct_fields,omitempty"` + + // (List of String) Fields to group by. If empty, each log triggers a signal. + // Fields to group by. + GroupByFields []*string `json:"groupByFields,omitempty" tf:"group_by_fields,omitempty"` + + // (String, Deprecated) The target field to aggregate over when using the sum, max, or geo_data aggregations. Deprecated. Configure metrics instead. This attribute will be removed in the next major version of the provider. + // The target field to aggregate over when using the `sum`, `max`, or `geo_data` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (List of String) Group of target fields to aggregate over when using the sum, max, geo_data, or new_value aggregations. The sum, max, and geo_data aggregations only accept one value in this list, whereas the new_value aggregation accepts up to five values. + // Group of target fields to aggregate over when using the `sum`, `max`, `geo_data`, or `new_value` aggregations. The `sum`, `max`, and `geo_data` aggregations only accept one value in this list, whereas the `new_value` aggregation accepts up to five values. + Metrics []*string `json:"metrics,omitempty" tf:"metrics,omitempty"` + + // (String) The name of the rule. + // Name of the query. Not compatible with `new_value` aggregations. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query to run on logs. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type QueryObservation struct { + + // (Block List, Deprecated) Deprecated. It won't be applied anymore. Deprecated. agent_rule has been deprecated in favor of new Agent Rule resource. (see below for nested schema) + // **Deprecated**. It won't be applied anymore. **Deprecated.** `agent_rule` has been deprecated in favor of new Agent Rule resource. + AgentRule []AgentRuleObservation `json:"agentRule,omitempty" tf:"agent_rule,omitempty"` + + // (String) The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are count, cardinality, sum, max, new_value, geo_data, event_count, none. Defaults to "count". + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `"count"`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (List of String) Field for which the cardinality is measured. Sent as an array. + // Field for which the cardinality is measured. Sent as an array. + DistinctFields []*string `json:"distinctFields,omitempty" tf:"distinct_fields,omitempty"` + + // (List of String) Fields to group by. If empty, each log triggers a signal. + // Fields to group by. + GroupByFields []*string `json:"groupByFields,omitempty" tf:"group_by_fields,omitempty"` + + // (String, Deprecated) The target field to aggregate over when using the sum, max, or geo_data aggregations. Deprecated. Configure metrics instead. This attribute will be removed in the next major version of the provider. + // The target field to aggregate over when using the `sum`, `max`, or `geo_data` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (List of String) Group of target fields to aggregate over when using the sum, max, geo_data, or new_value aggregations. The sum, max, and geo_data aggregations only accept one value in this list, whereas the new_value aggregation accepts up to five values. + // Group of target fields to aggregate over when using the `sum`, `max`, `geo_data`, or `new_value` aggregations. The `sum`, `max`, and `geo_data` aggregations only accept one value in this list, whereas the `new_value` aggregation accepts up to five values. + Metrics []*string `json:"metrics,omitempty" tf:"metrics,omitempty"` + + // (String) The name of the rule. + // Name of the query. Not compatible with `new_value` aggregations. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query to run on logs. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type QueryParameters struct { + + // (Block List, Deprecated) Deprecated. It won't be applied anymore. Deprecated. agent_rule has been deprecated in favor of new Agent Rule resource. (see below for nested schema) + // **Deprecated**. It won't be applied anymore. **Deprecated.** `agent_rule` has been deprecated in favor of new Agent Rule resource. + // +kubebuilder:validation:Optional + AgentRule []AgentRuleParameters `json:"agentRule,omitempty" tf:"agent_rule,omitempty"` + + // (String) The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are count, cardinality, sum, max, new_value, geo_data, event_count, none. Defaults to "count". + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `"count"`. + // +kubebuilder:validation:Optional + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (List of String) Field for which the cardinality is measured. Sent as an array. + // Field for which the cardinality is measured. Sent as an array. + // +kubebuilder:validation:Optional + DistinctFields []*string `json:"distinctFields,omitempty" tf:"distinct_fields,omitempty"` + + // (List of String) Fields to group by. If empty, each log triggers a signal. + // Fields to group by. + // +kubebuilder:validation:Optional + GroupByFields []*string `json:"groupByFields,omitempty" tf:"group_by_fields,omitempty"` + + // (String, Deprecated) The target field to aggregate over when using the sum, max, or geo_data aggregations. Deprecated. Configure metrics instead. This attribute will be removed in the next major version of the provider. + // The target field to aggregate over when using the `sum`, `max`, or `geo_data` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider. + // +kubebuilder:validation:Optional + Metric *string `json:"metric,omitempty" tf:"metric,omitempty"` + + // (List of String) Group of target fields to aggregate over when using the sum, max, geo_data, or new_value aggregations. The sum, max, and geo_data aggregations only accept one value in this list, whereas the new_value aggregation accepts up to five values. + // Group of target fields to aggregate over when using the `sum`, `max`, `geo_data`, or `new_value` aggregations. The `sum`, `max`, and `geo_data` aggregations only accept one value in this list, whereas the `new_value` aggregation accepts up to five values. + // +kubebuilder:validation:Optional + Metrics []*string `json:"metrics,omitempty" tf:"metrics,omitempty"` + + // (String) The name of the rule. + // Name of the query. Not compatible with `new_value` aggregations. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query to run on logs. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type RootQueryInitParameters struct { + + // (List of String) Fields to group by. If empty, each log triggers a signal. + // Fields to group by. If empty, each log triggers a signal. + GroupByFields []*string `json:"groupByFields,omitempty" tf:"group_by_fields,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query to filter logs. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type RootQueryObservation struct { + + // (List of String) Fields to group by. If empty, each log triggers a signal. + // Fields to group by. If empty, each log triggers a signal. + GroupByFields []*string `json:"groupByFields,omitempty" tf:"group_by_fields,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query to filter logs. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type RootQueryParameters struct { + + // (List of String) Fields to group by. If empty, each log triggers a signal. + // Fields to group by. If empty, each log triggers a signal. + // +kubebuilder:validation:Optional + GroupByFields []*string `json:"groupByFields,omitempty" tf:"group_by_fields,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query to filter logs. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type RuleCaseInitParameters struct { + + // (String) A rule case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated based on the event counts in the previously defined queries. + // A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated based on the event counts in the previously defined queries. + Condition *string `json:"condition,omitempty" tf:"condition,omitempty"` + + // (String) The name of the rule. + // Name of the case. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Severity of the Security Signal. Valid values are info, low, medium, high, critical. + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type RuleCaseObservation struct { + + // (String) A rule case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated based on the event counts in the previously defined queries. + // A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated based on the event counts in the previously defined queries. + Condition *string `json:"condition,omitempty" tf:"condition,omitempty"` + + // (String) The name of the rule. + // Name of the case. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Severity of the Security Signal. Valid values are info, low, medium, high, critical. + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type RuleCaseParameters struct { + + // (String) A rule case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated based on the event counts in the previously defined queries. + // A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated based on the event counts in the previously defined queries. + // +kubebuilder:validation:Optional + Condition *string `json:"condition,omitempty" tf:"condition,omitempty"` + + // (String) The name of the rule. + // Name of the case. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + // +kubebuilder:validation:Optional + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (String) Severity of the Security Signal. Valid values are info, low, medium, high, critical. + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + // +kubebuilder:validation:Optional + Status *string `json:"status" tf:"status,omitempty"` +} + +type RuleFilterInitParameters struct { + + // (String) The type of filtering action. Valid values are require, suppress. + // The type of filtering action. Valid values are `require`, `suppress`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query for selecting logs to apply the filtering action. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type RuleFilterObservation struct { + + // (String) The type of filtering action. Valid values are require, suppress. + // The type of filtering action. Valid values are `require`, `suppress`. + Action *string `json:"action,omitempty" tf:"action,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query for selecting logs to apply the filtering action. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type RuleFilterParameters struct { + + // (String) The type of filtering action. Valid values are require, suppress. + // The type of filtering action. Valid values are `require`, `suppress`. + // +kubebuilder:validation:Optional + Action *string `json:"action" tf:"action,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Query for selecting logs to apply the filtering action. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type RuleInitParameters struct { + + // (Block List, Max: 10) Cases for generating signals. (see below for nested schema) + // Cases for generating signals. + Case []RuleCaseInitParameters `json:"case,omitempty" tf:"case,omitempty"` + + // (Boolean) Whether the rule is enabled. Defaults to true. + // Whether the rule is enabled. Defaults to `true`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + // Additional queries to filter matched events before they are processed. + Filter []RuleFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // by values in their title. Defaults to false. + // Whether the notifications include the triggering group-by values in their title. Defaults to `false`. + HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty" tf:"has_extended_title,omitempty"` + + // (String) Message for generated signals. + // Message for generated signals. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The name of the rule. + // The name of the rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Options on rules. (see below for nested schema) + // Options on rules. + Options []RuleOptionsInitParameters `json:"options,omitempty" tf:"options,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Queries for selecting logs which are part of the rule. + Query []QueryInitParameters `json:"query,omitempty" tf:"query,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Queries for selecting logs which are part of the rule. + SignalQuery []SignalQueryInitParameters `json:"signalQuery,omitempty" tf:"signal_query,omitempty"` + + // (Set of String) Tags for generated signals. + // Tags for generated signals. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // party rules. Only required and accepted for third-party rules (see below for nested schema) + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCase []ThirdPartyCaseInitParameters `json:"thirdPartyCase,omitempty" tf:"third_party_case,omitempty"` + + // (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + // The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type RuleObservation struct { + + // (Block List, Max: 10) Cases for generating signals. (see below for nested schema) + // Cases for generating signals. + Case []RuleCaseObservation `json:"case,omitempty" tf:"case,omitempty"` + + // (Boolean) Whether the rule is enabled. Defaults to true. + // Whether the rule is enabled. Defaults to `true`. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + // Additional queries to filter matched events before they are processed. + Filter []RuleFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // by values in their title. Defaults to false. + // Whether the notifications include the triggering group-by values in their title. Defaults to `false`. + HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty" tf:"has_extended_title,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Message for generated signals. + // Message for generated signals. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The name of the rule. + // The name of the rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Options on rules. (see below for nested schema) + // Options on rules. + Options []RuleOptionsObservation `json:"options,omitempty" tf:"options,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Queries for selecting logs which are part of the rule. + Query []QueryObservation `json:"query,omitempty" tf:"query,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Queries for selecting logs which are part of the rule. + SignalQuery []SignalQueryObservation `json:"signalQuery,omitempty" tf:"signal_query,omitempty"` + + // (Set of String) Tags for generated signals. + // Tags for generated signals. + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // party rules. Only required and accepted for third-party rules (see below for nested schema) + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + ThirdPartyCase []ThirdPartyCaseObservation `json:"thirdPartyCase,omitempty" tf:"third_party_case,omitempty"` + + // (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + // The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type RuleOptionsInitParameters struct { + + // production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + // If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. + DecreaseCriticalityBasedOnEnv *bool `json:"decreaseCriticalityBasedOnEnv,omitempty" tf:"decrease_criticality_based_on_env,omitempty"` + + // (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party. Defaults to "threshold". + // The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `"threshold"`. + DetectionMethod *string `json:"detectionMethod,omitempty" tf:"detection_method,omitempty"` + + // (Number) A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200. + // A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`. + EvaluationWindow *float64 `json:"evaluationWindow,omitempty" tf:"evaluation_window,omitempty"` + + // (Block List, Max: 1) Options for rules using the impossible travel detection method. (see below for nested schema) + // Options for rules using the impossible travel detection method. + ImpossibleTravelOptions []ImpossibleTravelOptionsInitParameters `json:"impossibleTravelOptions,omitempty" tf:"impossible_travel_options,omitempty"` + + // (Number) Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600. + // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + KeepAlive *float64 `json:"keepAlive,omitempty" tf:"keep_alive,omitempty"` + + // (Number) A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400. + // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. + MaxSignalDuration *float64 `json:"maxSignalDuration,omitempty" tf:"max_signal_duration,omitempty"` + + // (Block List, Max: 1) New value rules specific options. (see below for nested schema) + // New value rules specific options. + NewValueOptions []NewValueOptionsInitParameters `json:"newValueOptions,omitempty" tf:"new_value_options,omitempty"` + + // party detection method. (see below for nested schema) + // Options for rules using the third-party detection method. + ThirdPartyRuleOptions []ThirdPartyRuleOptionsInitParameters `json:"thirdPartyRuleOptions,omitempty" tf:"third_party_rule_options,omitempty"` +} + +type RuleOptionsObservation struct { + + // production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + // If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. + DecreaseCriticalityBasedOnEnv *bool `json:"decreaseCriticalityBasedOnEnv,omitempty" tf:"decrease_criticality_based_on_env,omitempty"` + + // (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party. Defaults to "threshold". + // The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `"threshold"`. + DetectionMethod *string `json:"detectionMethod,omitempty" tf:"detection_method,omitempty"` + + // (Number) A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200. + // A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`. + EvaluationWindow *float64 `json:"evaluationWindow,omitempty" tf:"evaluation_window,omitempty"` + + // (Block List, Max: 1) Options for rules using the impossible travel detection method. (see below for nested schema) + // Options for rules using the impossible travel detection method. + ImpossibleTravelOptions []ImpossibleTravelOptionsObservation `json:"impossibleTravelOptions,omitempty" tf:"impossible_travel_options,omitempty"` + + // (Number) Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600. + // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + KeepAlive *float64 `json:"keepAlive,omitempty" tf:"keep_alive,omitempty"` + + // (Number) A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400. + // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. + MaxSignalDuration *float64 `json:"maxSignalDuration,omitempty" tf:"max_signal_duration,omitempty"` + + // (Block List, Max: 1) New value rules specific options. (see below for nested schema) + // New value rules specific options. + NewValueOptions []NewValueOptionsObservation `json:"newValueOptions,omitempty" tf:"new_value_options,omitempty"` + + // party detection method. (see below for nested schema) + // Options for rules using the third-party detection method. + ThirdPartyRuleOptions []ThirdPartyRuleOptionsObservation `json:"thirdPartyRuleOptions,omitempty" tf:"third_party_rule_options,omitempty"` +} + +type RuleOptionsParameters struct { + + // production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + // If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`. + // +kubebuilder:validation:Optional + DecreaseCriticalityBasedOnEnv *bool `json:"decreaseCriticalityBasedOnEnv,omitempty" tf:"decrease_criticality_based_on_env,omitempty"` + + // (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party. Defaults to "threshold". + // The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `"threshold"`. + // +kubebuilder:validation:Optional + DetectionMethod *string `json:"detectionMethod,omitempty" tf:"detection_method,omitempty"` + + // (Number) A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200. + // A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`. + // +kubebuilder:validation:Optional + EvaluationWindow *float64 `json:"evaluationWindow,omitempty" tf:"evaluation_window,omitempty"` + + // (Block List, Max: 1) Options for rules using the impossible travel detection method. (see below for nested schema) + // Options for rules using the impossible travel detection method. + // +kubebuilder:validation:Optional + ImpossibleTravelOptions []ImpossibleTravelOptionsParameters `json:"impossibleTravelOptions,omitempty" tf:"impossible_travel_options,omitempty"` + + // (Number) Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600. + // Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + // +kubebuilder:validation:Optional + KeepAlive *float64 `json:"keepAlive,omitempty" tf:"keep_alive,omitempty"` + + // (Number) A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400. + // A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`. + // +kubebuilder:validation:Optional + MaxSignalDuration *float64 `json:"maxSignalDuration,omitempty" tf:"max_signal_duration,omitempty"` + + // (Block List, Max: 1) New value rules specific options. (see below for nested schema) + // New value rules specific options. + // +kubebuilder:validation:Optional + NewValueOptions []NewValueOptionsParameters `json:"newValueOptions,omitempty" tf:"new_value_options,omitempty"` + + // party detection method. (see below for nested schema) + // Options for rules using the third-party detection method. + // +kubebuilder:validation:Optional + ThirdPartyRuleOptions []ThirdPartyRuleOptionsParameters `json:"thirdPartyRuleOptions,omitempty" tf:"third_party_rule_options,omitempty"` +} + +type RuleParameters struct { + + // (Block List, Max: 10) Cases for generating signals. (see below for nested schema) + // Cases for generating signals. + // +kubebuilder:validation:Optional + Case []RuleCaseParameters `json:"case,omitempty" tf:"case,omitempty"` + + // (Boolean) Whether the rule is enabled. Defaults to true. + // Whether the rule is enabled. Defaults to `true`. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + + // (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + // Additional queries to filter matched events before they are processed. + // +kubebuilder:validation:Optional + Filter []RuleFilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // by values in their title. Defaults to false. + // Whether the notifications include the triggering group-by values in their title. Defaults to `false`. + // +kubebuilder:validation:Optional + HasExtendedTitle *bool `json:"hasExtendedTitle,omitempty" tf:"has_extended_title,omitempty"` + + // (String) Message for generated signals. + // Message for generated signals. + // +kubebuilder:validation:Optional + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The name of the rule. + // The name of the rule. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Options on rules. (see below for nested schema) + // Options on rules. + // +kubebuilder:validation:Optional + Options []RuleOptionsParameters `json:"options,omitempty" tf:"options,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Queries for selecting logs which are part of the rule. + // +kubebuilder:validation:Optional + Query []QueryParameters `json:"query,omitempty" tf:"query,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // Queries for selecting logs which are part of the rule. + // +kubebuilder:validation:Optional + SignalQuery []SignalQueryParameters `json:"signalQuery,omitempty" tf:"signal_query,omitempty"` + + // (Set of String) Tags for generated signals. + // Tags for generated signals. + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // party rules. Only required and accepted for third-party rules (see below for nested schema) + // Cases for generating signals for third-party rules. Only required and accepted for third-party rules + // +kubebuilder:validation:Optional + ThirdPartyCase []ThirdPartyCaseParameters `json:"thirdPartyCase,omitempty" tf:"third_party_case,omitempty"` + + // (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + // The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `"log_detection"`. + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type SignalQueryInitParameters struct { + + // (String) The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are count, cardinality, sum, max, new_value, geo_data, event_count, none. Defaults to "count". + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `"event_count"`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (List of String) Fields to correlate by. + // Fields to correlate by. + CorrelatedByFields []*string `json:"correlatedByFields,omitempty" tf:"correlated_by_fields,omitempty"` + + // projected per query attributes of the rule. Defaults to "". + // Index of the rule query used to retrieve the correlated field. An empty string applies correlation on the non-projected per query attributes of the rule. Defaults to `""`. + CorrelatedQueryIndex *string `json:"correlatedQueryIndex,omitempty" tf:"correlated_query_index,omitempty"` + + // ONLY. + // Default Rule ID of the signal to correlate. This value is READ-ONLY. + DefaultRuleID *string `json:"defaultRuleId,omitempty" tf:"default_rule_id,omitempty"` + + // (String) The name of the rule. + // Name of the query. Not compatible with `new_value` aggregations. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Rule ID of the signal to correlate. + // Rule ID of the signal to correlate. + RuleID *string `json:"ruleId,omitempty" tf:"rule_id,omitempty"` +} + +type SignalQueryObservation struct { + + // (String) The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are count, cardinality, sum, max, new_value, geo_data, event_count, none. Defaults to "count". + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `"event_count"`. + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (List of String) Fields to correlate by. + // Fields to correlate by. + CorrelatedByFields []*string `json:"correlatedByFields,omitempty" tf:"correlated_by_fields,omitempty"` + + // projected per query attributes of the rule. Defaults to "". + // Index of the rule query used to retrieve the correlated field. An empty string applies correlation on the non-projected per query attributes of the rule. Defaults to `""`. + CorrelatedQueryIndex *string `json:"correlatedQueryIndex,omitempty" tf:"correlated_query_index,omitempty"` + + // ONLY. + // Default Rule ID of the signal to correlate. This value is READ-ONLY. + DefaultRuleID *string `json:"defaultRuleId,omitempty" tf:"default_rule_id,omitempty"` + + // (String) The name of the rule. + // Name of the query. Not compatible with `new_value` aggregations. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Rule ID of the signal to correlate. + // Rule ID of the signal to correlate. + RuleID *string `json:"ruleId,omitempty" tf:"rule_id,omitempty"` +} + +type SignalQueryParameters struct { + + // (String) The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are count, cardinality, sum, max, new_value, geo_data, event_count, none. Defaults to "count". + // The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `"event_count"`. + // +kubebuilder:validation:Optional + Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + + // (List of String) Fields to correlate by. + // Fields to correlate by. + // +kubebuilder:validation:Optional + CorrelatedByFields []*string `json:"correlatedByFields,omitempty" tf:"correlated_by_fields,omitempty"` + + // projected per query attributes of the rule. Defaults to "". + // Index of the rule query used to retrieve the correlated field. An empty string applies correlation on the non-projected per query attributes of the rule. Defaults to `""`. + // +kubebuilder:validation:Optional + CorrelatedQueryIndex *string `json:"correlatedQueryIndex,omitempty" tf:"correlated_query_index,omitempty"` + + // ONLY. + // Default Rule ID of the signal to correlate. This value is READ-ONLY. + // +kubebuilder:validation:Optional + DefaultRuleID *string `json:"defaultRuleId,omitempty" tf:"default_rule_id,omitempty"` + + // (String) The name of the rule. + // Name of the query. Not compatible with `new_value` aggregations. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Rule ID of the signal to correlate. + // Rule ID of the signal to correlate. + // +kubebuilder:validation:Optional + RuleID *string `json:"ruleId" tf:"rule_id,omitempty"` +} + +type ThirdPartyCaseInitParameters struct { + + // (String) The name of the rule. + // Name of the case. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // A query to associate a third-party event to this case. + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (String) Severity of the Security Signal. Valid values are info, low, medium, high, critical. + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type ThirdPartyCaseObservation struct { + + // (String) The name of the rule. + // Name of the case. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // A query to associate a third-party event to this case. + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (String) Severity of the Security Signal. Valid values are info, low, medium, high, critical. + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + Status *string `json:"status,omitempty" tf:"status,omitempty"` +} + +type ThirdPartyCaseParameters struct { + + // (String) The name of the rule. + // Name of the case. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Notification targets for each rule case. + // Notification targets for each rule case. + // +kubebuilder:validation:Optional + Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` + + // (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + // A query to associate a third-party event to this case. + // +kubebuilder:validation:Optional + Query *string `json:"query,omitempty" tf:"query,omitempty"` + + // (String) Severity of the Security Signal. Valid values are info, low, medium, high, critical. + // Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`. + // +kubebuilder:validation:Optional + Status *string `json:"status" tf:"status,omitempty"` +} + +type ThirdPartyRuleOptionsInitParameters struct { + + // party cases match. + // Notification targets for the default rule case, when none of the third-party cases match. + DefaultNotifications []*string `json:"defaultNotifications,omitempty" tf:"default_notifications,omitempty"` + + // party cases match. Valid values are info, low, medium, high, critical. + // Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + DefaultStatus *string `json:"defaultStatus,omitempty" tf:"default_status,omitempty"` + + // party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. (see below for nested schema) + // Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + RootQuery []RootQueryInitParameters `json:"rootQuery,omitempty" tf:"root_query,omitempty"` + + // (String) A template for the signal title; if omitted, the title is generated based on the case name. + // A template for the signal title; if omitted, the title is generated based on the case name. + SignalTitleTemplate *string `json:"signalTitleTemplate,omitempty" tf:"signal_title_template,omitempty"` +} + +type ThirdPartyRuleOptionsObservation struct { + + // party cases match. + // Notification targets for the default rule case, when none of the third-party cases match. + DefaultNotifications []*string `json:"defaultNotifications,omitempty" tf:"default_notifications,omitempty"` + + // party cases match. Valid values are info, low, medium, high, critical. + // Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + DefaultStatus *string `json:"defaultStatus,omitempty" tf:"default_status,omitempty"` + + // party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. (see below for nested schema) + // Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + RootQuery []RootQueryObservation `json:"rootQuery,omitempty" tf:"root_query,omitempty"` + + // (String) A template for the signal title; if omitted, the title is generated based on the case name. + // A template for the signal title; if omitted, the title is generated based on the case name. + SignalTitleTemplate *string `json:"signalTitleTemplate,omitempty" tf:"signal_title_template,omitempty"` +} + +type ThirdPartyRuleOptionsParameters struct { + + // party cases match. + // Notification targets for the default rule case, when none of the third-party cases match. + // +kubebuilder:validation:Optional + DefaultNotifications []*string `json:"defaultNotifications,omitempty" tf:"default_notifications,omitempty"` + + // party cases match. Valid values are info, low, medium, high, critical. + // Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`. + // +kubebuilder:validation:Optional + DefaultStatus *string `json:"defaultStatus" tf:"default_status,omitempty"` + + // party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. (see below for nested schema) + // Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. + // +kubebuilder:validation:Optional + RootQuery []RootQueryParameters `json:"rootQuery" tf:"root_query,omitempty"` + + // (String) A template for the signal title; if omitted, the title is generated based on the case name. + // A template for the signal title; if omitted, the title is generated based on the case name. + // +kubebuilder:validation:Optional + SignalTitleTemplate *string `json:"signalTitleTemplate,omitempty" tf:"signal_title_template,omitempty"` +} + +// RuleSpec defines the desired state of Rule +type RuleSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RuleParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RuleInitParameters `json:"initProvider,omitempty"` +} + +// RuleStatus defines the observed state of Rule. +type RuleStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RuleObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Rule is the Schema for the Rules API. Provides a Datadog Security Monitoring Rule API resource. This can be used to create and manage Datadog security monitoring rules. To change settings for a default rule use datadog_security_default_rule instead. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Rule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.message) || (has(self.initProvider) && has(self.initProvider.message))",message="spec.forProvider.message is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec RuleSpec `json:"spec"` + Status RuleStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RuleList contains a list of Rules +type RuleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Rule `json:"items"` +} + +// Repository type metadata. +var ( + Rule_Kind = "Rule" + Rule_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Rule_Kind}.String() + Rule_KindAPIVersion = Rule_Kind + "." + CRDGroupVersion.String() + Rule_GroupVersionKind = CRDGroupVersion.WithKind(Rule_Kind) +) + +func init() { + SchemeBuilder.Register(&Rule{}, &RuleList{}) +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_generated.conversion_hubs.go b/apis/sensitivedatascanner/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..dded650 --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *Group) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *GroupOrder) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Rule) Hub() {} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_generated.deepcopy.go b/apis/sensitivedatascanner/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..50234da --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,1051 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterInitParameters) DeepCopyInto(out *FilterInitParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterInitParameters. +func (in *FilterInitParameters) DeepCopy() *FilterInitParameters { + if in == nil { + return nil + } + out := new(FilterInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterObservation) DeepCopyInto(out *FilterObservation) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterObservation. +func (in *FilterObservation) DeepCopy() *FilterObservation { + if in == nil { + return nil + } + out := new(FilterObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FilterParameters) DeepCopyInto(out *FilterParameters) { + *out = *in + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterParameters. +func (in *FilterParameters) DeepCopy() *FilterParameters { + if in == nil { + return nil + } + out := new(FilterParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Group) DeepCopyInto(out *Group) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Group. +func (in *Group) DeepCopy() *Group { + if in == nil { + return nil + } + out := new(Group) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Group) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupInitParameters) DeepCopyInto(out *GroupInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProductList != nil { + in, out := &in.ProductList, &out.ProductList + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupInitParameters. +func (in *GroupInitParameters) DeepCopy() *GroupInitParameters { + if in == nil { + return nil + } + out := new(GroupInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupList) DeepCopyInto(out *GroupList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Group, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupList. +func (in *GroupList) DeepCopy() *GroupList { + if in == nil { + return nil + } + out := new(GroupList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GroupList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupObservation) DeepCopyInto(out *GroupObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProductList != nil { + in, out := &in.ProductList, &out.ProductList + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupObservation. +func (in *GroupObservation) DeepCopy() *GroupObservation { + if in == nil { + return nil + } + out := new(GroupObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupOrder) DeepCopyInto(out *GroupOrder) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrder. +func (in *GroupOrder) DeepCopy() *GroupOrder { + if in == nil { + return nil + } + out := new(GroupOrder) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GroupOrder) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupOrderInitParameters) DeepCopyInto(out *GroupOrderInitParameters) { + *out = *in + if in.GroupIds != nil { + in, out := &in.GroupIds, &out.GroupIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderInitParameters. +func (in *GroupOrderInitParameters) DeepCopy() *GroupOrderInitParameters { + if in == nil { + return nil + } + out := new(GroupOrderInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupOrderList) DeepCopyInto(out *GroupOrderList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]GroupOrder, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderList. +func (in *GroupOrderList) DeepCopy() *GroupOrderList { + if in == nil { + return nil + } + out := new(GroupOrderList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GroupOrderList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupOrderObservation) DeepCopyInto(out *GroupOrderObservation) { + *out = *in + if in.GroupIds != nil { + in, out := &in.GroupIds, &out.GroupIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderObservation. +func (in *GroupOrderObservation) DeepCopy() *GroupOrderObservation { + if in == nil { + return nil + } + out := new(GroupOrderObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupOrderParameters) DeepCopyInto(out *GroupOrderParameters) { + *out = *in + if in.GroupIds != nil { + in, out := &in.GroupIds, &out.GroupIds + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderParameters. +func (in *GroupOrderParameters) DeepCopy() *GroupOrderParameters { + if in == nil { + return nil + } + out := new(GroupOrderParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupOrderSpec) DeepCopyInto(out *GroupOrderSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderSpec. +func (in *GroupOrderSpec) DeepCopy() *GroupOrderSpec { + if in == nil { + return nil + } + out := new(GroupOrderSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupOrderStatus) DeepCopyInto(out *GroupOrderStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderStatus. +func (in *GroupOrderStatus) DeepCopy() *GroupOrderStatus { + if in == nil { + return nil + } + out := new(GroupOrderStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupParameters) DeepCopyInto(out *GroupParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Filter != nil { + in, out := &in.Filter, &out.Filter + *out = make([]FilterParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProductList != nil { + in, out := &in.ProductList, &out.ProductList + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupParameters. +func (in *GroupParameters) DeepCopy() *GroupParameters { + if in == nil { + return nil + } + out := new(GroupParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupSpec) DeepCopyInto(out *GroupSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupSpec. +func (in *GroupSpec) DeepCopy() *GroupSpec { + if in == nil { + return nil + } + out := new(GroupSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupStatus) DeepCopyInto(out *GroupStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupStatus. +func (in *GroupStatus) DeepCopy() *GroupStatus { + if in == nil { + return nil + } + out := new(GroupStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IncludedKeywordConfigurationInitParameters) DeepCopyInto(out *IncludedKeywordConfigurationInitParameters) { + *out = *in + if in.CharacterCount != nil { + in, out := &in.CharacterCount, &out.CharacterCount + *out = new(float64) + **out = **in + } + if in.Keywords != nil { + in, out := &in.Keywords, &out.Keywords + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IncludedKeywordConfigurationInitParameters. +func (in *IncludedKeywordConfigurationInitParameters) DeepCopy() *IncludedKeywordConfigurationInitParameters { + if in == nil { + return nil + } + out := new(IncludedKeywordConfigurationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IncludedKeywordConfigurationObservation) DeepCopyInto(out *IncludedKeywordConfigurationObservation) { + *out = *in + if in.CharacterCount != nil { + in, out := &in.CharacterCount, &out.CharacterCount + *out = new(float64) + **out = **in + } + if in.Keywords != nil { + in, out := &in.Keywords, &out.Keywords + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IncludedKeywordConfigurationObservation. +func (in *IncludedKeywordConfigurationObservation) DeepCopy() *IncludedKeywordConfigurationObservation { + if in == nil { + return nil + } + out := new(IncludedKeywordConfigurationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IncludedKeywordConfigurationParameters) DeepCopyInto(out *IncludedKeywordConfigurationParameters) { + *out = *in + if in.CharacterCount != nil { + in, out := &in.CharacterCount, &out.CharacterCount + *out = new(float64) + **out = **in + } + if in.Keywords != nil { + in, out := &in.Keywords, &out.Keywords + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IncludedKeywordConfigurationParameters. +func (in *IncludedKeywordConfigurationParameters) DeepCopy() *IncludedKeywordConfigurationParameters { + if in == nil { + return nil + } + out := new(IncludedKeywordConfigurationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Rule) DeepCopyInto(out *Rule) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rule. +func (in *Rule) DeepCopy() *Rule { + if in == nil { + return nil + } + out := new(Rule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Rule) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ExcludedNamespaces != nil { + in, out := &in.ExcludedNamespaces, &out.ExcludedNamespaces + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GroupID != nil { + in, out := &in.GroupID, &out.GroupID + *out = new(string) + **out = **in + } + if in.IncludedKeywordConfiguration != nil { + in, out := &in.IncludedKeywordConfiguration, &out.IncludedKeywordConfiguration + *out = make([]IncludedKeywordConfigurationInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Pattern != nil { + in, out := &in.Pattern, &out.Pattern + *out = new(string) + **out = **in + } + if in.StandardPatternID != nil { + in, out := &in.StandardPatternID, &out.StandardPatternID + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TextReplacement != nil { + in, out := &in.TextReplacement, &out.TextReplacement + *out = make([]TextReplacementInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleInitParameters. +func (in *RuleInitParameters) DeepCopy() *RuleInitParameters { + if in == nil { + return nil + } + out := new(RuleInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleList) DeepCopyInto(out *RuleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Rule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleList. +func (in *RuleList) DeepCopy() *RuleList { + if in == nil { + return nil + } + out := new(RuleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RuleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ExcludedNamespaces != nil { + in, out := &in.ExcludedNamespaces, &out.ExcludedNamespaces + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GroupID != nil { + in, out := &in.GroupID, &out.GroupID + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.IncludedKeywordConfiguration != nil { + in, out := &in.IncludedKeywordConfiguration, &out.IncludedKeywordConfiguration + *out = make([]IncludedKeywordConfigurationObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Pattern != nil { + in, out := &in.Pattern, &out.Pattern + *out = new(string) + **out = **in + } + if in.StandardPatternID != nil { + in, out := &in.StandardPatternID, &out.StandardPatternID + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TextReplacement != nil { + in, out := &in.TextReplacement, &out.TextReplacement + *out = make([]TextReplacementObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleObservation. +func (in *RuleObservation) DeepCopy() *RuleObservation { + if in == nil { + return nil + } + out := new(RuleObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ExcludedNamespaces != nil { + in, out := &in.ExcludedNamespaces, &out.ExcludedNamespaces + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.GroupID != nil { + in, out := &in.GroupID, &out.GroupID + *out = new(string) + **out = **in + } + if in.IncludedKeywordConfiguration != nil { + in, out := &in.IncludedKeywordConfiguration, &out.IncludedKeywordConfiguration + *out = make([]IncludedKeywordConfigurationParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Pattern != nil { + in, out := &in.Pattern, &out.Pattern + *out = new(string) + **out = **in + } + if in.StandardPatternID != nil { + in, out := &in.StandardPatternID, &out.StandardPatternID + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.TextReplacement != nil { + in, out := &in.TextReplacement, &out.TextReplacement + *out = make([]TextReplacementParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleParameters. +func (in *RuleParameters) DeepCopy() *RuleParameters { + if in == nil { + return nil + } + out := new(RuleParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleSpec) DeepCopyInto(out *RuleSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleSpec. +func (in *RuleSpec) DeepCopy() *RuleSpec { + if in == nil { + return nil + } + out := new(RuleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleStatus) DeepCopyInto(out *RuleStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleStatus. +func (in *RuleStatus) DeepCopy() *RuleStatus { + if in == nil { + return nil + } + out := new(RuleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TextReplacementInitParameters) DeepCopyInto(out *TextReplacementInitParameters) { + *out = *in + if in.NumberOfChars != nil { + in, out := &in.NumberOfChars, &out.NumberOfChars + *out = new(float64) + **out = **in + } + if in.ReplacementString != nil { + in, out := &in.ReplacementString, &out.ReplacementString + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TextReplacementInitParameters. +func (in *TextReplacementInitParameters) DeepCopy() *TextReplacementInitParameters { + if in == nil { + return nil + } + out := new(TextReplacementInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TextReplacementObservation) DeepCopyInto(out *TextReplacementObservation) { + *out = *in + if in.NumberOfChars != nil { + in, out := &in.NumberOfChars, &out.NumberOfChars + *out = new(float64) + **out = **in + } + if in.ReplacementString != nil { + in, out := &in.ReplacementString, &out.ReplacementString + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TextReplacementObservation. +func (in *TextReplacementObservation) DeepCopy() *TextReplacementObservation { + if in == nil { + return nil + } + out := new(TextReplacementObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TextReplacementParameters) DeepCopyInto(out *TextReplacementParameters) { + *out = *in + if in.NumberOfChars != nil { + in, out := &in.NumberOfChars, &out.NumberOfChars + *out = new(float64) + **out = **in + } + if in.ReplacementString != nil { + in, out := &in.ReplacementString, &out.ReplacementString + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TextReplacementParameters. +func (in *TextReplacementParameters) DeepCopy() *TextReplacementParameters { + if in == nil { + return nil + } + out := new(TextReplacementParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_generated.managed.go b/apis/sensitivedatascanner/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..119a509 --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_generated.managed.go @@ -0,0 +1,188 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this Group. +func (mg *Group) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Group. +func (mg *Group) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Group. +func (mg *Group) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Group. +func (mg *Group) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Group. +func (mg *Group) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Group. +func (mg *Group) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Group. +func (mg *Group) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Group. +func (mg *Group) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Group. +func (mg *Group) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Group. +func (mg *Group) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Group. +func (mg *Group) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Group. +func (mg *Group) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this GroupOrder. +func (mg *GroupOrder) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this GroupOrder. +func (mg *GroupOrder) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this GroupOrder. +func (mg *GroupOrder) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this GroupOrder. +func (mg *GroupOrder) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this GroupOrder. +func (mg *GroupOrder) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this GroupOrder. +func (mg *GroupOrder) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this GroupOrder. +func (mg *GroupOrder) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this GroupOrder. +func (mg *GroupOrder) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this GroupOrder. +func (mg *GroupOrder) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this GroupOrder. +func (mg *GroupOrder) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this GroupOrder. +func (mg *GroupOrder) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this GroupOrder. +func (mg *GroupOrder) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this Rule. +func (mg *Rule) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Rule. +func (mg *Rule) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Rule. +func (mg *Rule) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Rule. +func (mg *Rule) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Rule. +func (mg *Rule) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Rule. +func (mg *Rule) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Rule. +func (mg *Rule) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Rule. +func (mg *Rule) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Rule. +func (mg *Rule) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Rule. +func (mg *Rule) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Rule. +func (mg *Rule) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Rule. +func (mg *Rule) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_generated.managedlist.go b/apis/sensitivedatascanner/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..07aaaae --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,35 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this GroupList. +func (l *GroupList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this GroupOrderList. +func (l *GroupOrderList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this RuleList. +func (l *RuleList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_group_terraformed.go b/apis/sensitivedatascanner/v1alpha1/zz_group_terraformed.go new file mode 100755 index 0000000..c26368c --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_group_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Group +func (mg *Group) GetTerraformResourceType() string { + return "datadog_sensitive_data_scanner_group" +} + +// GetConnectionDetailsMapping for this Group +func (tr *Group) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Group +func (tr *Group) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Group +func (tr *Group) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Group +func (tr *Group) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Group +func (tr *Group) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Group +func (tr *Group) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Group +func (tr *Group) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Group +func (tr *Group) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Group using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Group) LateInitialize(attrs []byte) (bool, error) { + params := &GroupParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Group) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_group_types.go b/apis/sensitivedatascanner/v1alpha1/zz_group_types.go new file mode 100755 index 0000000..01ddb5c --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_group_types.go @@ -0,0 +1,185 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type FilterInitParameters struct { + + // (String) Query to filter the events. + // Query to filter the events. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterObservation struct { + + // (String) Query to filter the events. + // Query to filter the events. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type FilterParameters struct { + + // (String) Query to filter the events. + // Query to filter the events. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + +type GroupInitParameters struct { + + // (String) Description of the Datadog scanning group. + // Description of the Datadog scanning group. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Block List, Min: 1, Max: 1) Filter object the scanning group applies. (see below for nested schema) + // Filter object the scanning group applies. + Filter []FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // disabled by our backend + // Whether or not the scanning group is enabled. If the group doesn't contain any rule or if all the rules in it are disabled, the group is force-disabled by our backend + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Datadog scanning group. + // Name of the Datadog scanning group. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) List of products the scanning group applies. Valid values are logs, rum, events, apm. + // List of products the scanning group applies. Valid values are `logs`, `rum`, `events`, `apm`. + // +listType=set + ProductList []*string `json:"productList,omitempty" tf:"product_list,omitempty"` +} + +type GroupObservation struct { + + // (String) Description of the Datadog scanning group. + // Description of the Datadog scanning group. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Block List, Min: 1, Max: 1) Filter object the scanning group applies. (see below for nested schema) + // Filter object the scanning group applies. + Filter []FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // disabled by our backend + // Whether or not the scanning group is enabled. If the group doesn't contain any rule or if all the rules in it are disabled, the group is force-disabled by our backend + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Datadog scanning group. + // Name of the Datadog scanning group. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) List of products the scanning group applies. Valid values are logs, rum, events, apm. + // List of products the scanning group applies. Valid values are `logs`, `rum`, `events`, `apm`. + // +listType=set + ProductList []*string `json:"productList,omitempty" tf:"product_list,omitempty"` +} + +type GroupParameters struct { + + // (String) Description of the Datadog scanning group. + // Description of the Datadog scanning group. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Block List, Min: 1, Max: 1) Filter object the scanning group applies. (see below for nested schema) + // Filter object the scanning group applies. + // +kubebuilder:validation:Optional + Filter []FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + + // disabled by our backend + // Whether or not the scanning group is enabled. If the group doesn't contain any rule or if all the rules in it are disabled, the group is force-disabled by our backend + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the Datadog scanning group. + // Name of the Datadog scanning group. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) List of products the scanning group applies. Valid values are logs, rum, events, apm. + // List of products the scanning group applies. Valid values are `logs`, `rum`, `events`, `apm`. + // +kubebuilder:validation:Optional + // +listType=set + ProductList []*string `json:"productList,omitempty" tf:"product_list,omitempty"` +} + +// GroupSpec defines the desired state of Group +type GroupSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider GroupParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider GroupInitParameters `json:"initProvider,omitempty"` +} + +// GroupStatus defines the observed state of Group. +type GroupStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider GroupObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Group is the Schema for the Groups API. Provides a Sensitive Data Scanner group resource. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Group struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.filter) || (has(self.initProvider) && has(self.initProvider.filter))",message="spec.forProvider.filter is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.isEnabled) || (has(self.initProvider) && has(self.initProvider.isEnabled))",message="spec.forProvider.isEnabled is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.productList) || (has(self.initProvider) && has(self.initProvider.productList))",message="spec.forProvider.productList is a required parameter" + Spec GroupSpec `json:"spec"` + Status GroupStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// GroupList contains a list of Groups +type GroupList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Group `json:"items"` +} + +// Repository type metadata. +var ( + Group_Kind = "Group" + Group_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Group_Kind}.String() + Group_KindAPIVersion = Group_Kind + "." + CRDGroupVersion.String() + Group_GroupVersionKind = CRDGroupVersion.WithKind(Group_Kind) +) + +func init() { + SchemeBuilder.Register(&Group{}, &GroupList{}) +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_grouporder_terraformed.go b/apis/sensitivedatascanner/v1alpha1/zz_grouporder_terraformed.go new file mode 100755 index 0000000..b70a9e6 --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_grouporder_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this GroupOrder +func (mg *GroupOrder) GetTerraformResourceType() string { + return "datadog_sensitive_data_scanner_group_order" +} + +// GetConnectionDetailsMapping for this GroupOrder +func (tr *GroupOrder) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this GroupOrder +func (tr *GroupOrder) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this GroupOrder +func (tr *GroupOrder) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this GroupOrder +func (tr *GroupOrder) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this GroupOrder +func (tr *GroupOrder) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this GroupOrder +func (tr *GroupOrder) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this GroupOrder +func (tr *GroupOrder) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this GroupOrder +func (tr *GroupOrder) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this GroupOrder using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *GroupOrder) LateInitialize(attrs []byte) (bool, error) { + params := &GroupOrderParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *GroupOrder) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_grouporder_types.go b/apis/sensitivedatascanner/v1alpha1/zz_grouporder_types.go new file mode 100755 index 0000000..ba4244d --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_grouporder_types.go @@ -0,0 +1,105 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type GroupOrderInitParameters struct { + + // (List of String) The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list. + // The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list. + GroupIds []*string `json:"groupIds,omitempty" tf:"group_ids,omitempty"` +} + +type GroupOrderObservation struct { + + // (List of String) The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list. + // The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list. + GroupIds []*string `json:"groupIds,omitempty" tf:"group_ids,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type GroupOrderParameters struct { + + // (List of String) The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list. + // The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list. + // +kubebuilder:validation:Optional + GroupIds []*string `json:"groupIds,omitempty" tf:"group_ids,omitempty"` +} + +// GroupOrderSpec defines the desired state of GroupOrder +type GroupOrderSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider GroupOrderParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider GroupOrderInitParameters `json:"initProvider,omitempty"` +} + +// GroupOrderStatus defines the observed state of GroupOrder. +type GroupOrderStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider GroupOrderObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// GroupOrder is the Schema for the GroupOrders API. Provides a Datadog Sensitive Data Scanner Group Order API resource. This can be used to manage the order of Datadog Sensitive Data Scanner Groups. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type GroupOrder struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.groupIds) || (has(self.initProvider) && has(self.initProvider.groupIds))",message="spec.forProvider.groupIds is a required parameter" + Spec GroupOrderSpec `json:"spec"` + Status GroupOrderStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// GroupOrderList contains a list of GroupOrders +type GroupOrderList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []GroupOrder `json:"items"` +} + +// Repository type metadata. +var ( + GroupOrder_Kind = "GroupOrder" + GroupOrder_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: GroupOrder_Kind}.String() + GroupOrder_KindAPIVersion = GroupOrder_Kind + "." + CRDGroupVersion.String() + GroupOrder_GroupVersionKind = CRDGroupVersion.WithKind(GroupOrder_Kind) +) + +func init() { + SchemeBuilder.Register(&GroupOrder{}, &GroupOrderList{}) +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_groupversion_info.go b/apis/sensitivedatascanner/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..d462961 --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=sensitivedatascanner.datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "sensitivedatascanner.datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/sensitivedatascanner/v1alpha1/zz_rule_terraformed.go b/apis/sensitivedatascanner/v1alpha1/zz_rule_terraformed.go new file mode 100755 index 0000000..254c021 --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_rule_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this Rule +func (mg *Rule) GetTerraformResourceType() string { + return "datadog_sensitive_data_scanner_rule" +} + +// GetConnectionDetailsMapping for this Rule +func (tr *Rule) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Rule +func (tr *Rule) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this Rule +func (tr *Rule) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this Rule +func (tr *Rule) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Rule +func (tr *Rule) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this Rule +func (tr *Rule) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this Rule +func (tr *Rule) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this Rule +func (tr *Rule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this Rule using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Rule) LateInitialize(attrs []byte) (bool, error) { + params := &RuleParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *Rule) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_rule_types.go b/apis/sensitivedatascanner/v1alpha1/zz_rule_types.go new file mode 100755 index 0000000..a1ccf18 --- /dev/null +++ b/apis/sensitivedatascanner/v1alpha1/zz_rule_types.go @@ -0,0 +1,318 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type IncludedKeywordConfigurationInitParameters struct { + + // (Number) Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + // Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + CharacterCount *float64 `json:"characterCount,omitempty" tf:"character_count,omitempty"` + + // (List of String) Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + // Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + Keywords []*string `json:"keywords,omitempty" tf:"keywords,omitempty"` +} + +type IncludedKeywordConfigurationObservation struct { + + // (Number) Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + // Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + CharacterCount *float64 `json:"characterCount,omitempty" tf:"character_count,omitempty"` + + // (List of String) Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + // Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + Keywords []*string `json:"keywords,omitempty" tf:"keywords,omitempty"` +} + +type IncludedKeywordConfigurationParameters struct { + + // (Number) Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + // Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + // +kubebuilder:validation:Optional + CharacterCount *float64 `json:"characterCount" tf:"character_count,omitempty"` + + // (List of String) Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + // Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + // +kubebuilder:validation:Optional + Keywords []*string `json:"keywords" tf:"keywords,omitempty"` +} + +type RuleInitParameters struct { + + // (String) Description of the rule. + // Description of the rule. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // path of the namespaces array. + // Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. + ExcludedNamespaces []*string `json:"excludedNamespaces,omitempty" tf:"excluded_namespaces,omitempty"` + + // (String) Id of the scanning group the rule belongs to. + // Id of the scanning group the rule belongs to. + GroupID *string `json:"groupId,omitempty" tf:"group_id,omitempty"` + + // argument to true is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. (see below for nested schema) + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + IncludedKeywordConfiguration []IncludedKeywordConfigurationInitParameters `json:"includedKeywordConfiguration,omitempty" tf:"included_keyword_configuration,omitempty"` + + // (Boolean) Whether or not the rule is enabled. + // Whether or not the rule is enabled. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the rule. + // Name of the rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. + // Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. + Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + + // (String) Not included if there is a relationship to a standard pattern. + // Not included if there is a relationship to a standard pattern. + Pattern *string `json:"pattern,omitempty" tf:"pattern,omitempty"` + + // (String) Id of the standard pattern the rule refers to. If provided, then pattern must not be provided. + // Id of the standard pattern the rule refers to. If provided, then pattern must not be provided. + StandardPatternID *string `json:"standardPatternId,omitempty" tf:"standard_pattern_id,omitempty"` + + // (List of String) List of tags. + // List of tags. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Block List, Max: 1) Object describing how the scanned event will be replaced. Defaults to type: none (see below for nested schema) + // Object describing how the scanned event will be replaced. Defaults to `type: none` + TextReplacement []TextReplacementInitParameters `json:"textReplacement,omitempty" tf:"text_replacement,omitempty"` +} + +type RuleObservation struct { + + // (String) Description of the rule. + // Description of the rule. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // path of the namespaces array. + // Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. + ExcludedNamespaces []*string `json:"excludedNamespaces,omitempty" tf:"excluded_namespaces,omitempty"` + + // (String) Id of the scanning group the rule belongs to. + // Id of the scanning group the rule belongs to. + GroupID *string `json:"groupId,omitempty" tf:"group_id,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // argument to true is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. (see below for nested schema) + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + IncludedKeywordConfiguration []IncludedKeywordConfigurationObservation `json:"includedKeywordConfiguration,omitempty" tf:"included_keyword_configuration,omitempty"` + + // (Boolean) Whether or not the rule is enabled. + // Whether or not the rule is enabled. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the rule. + // Name of the rule. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. + // Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. + Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + + // (String) Not included if there is a relationship to a standard pattern. + // Not included if there is a relationship to a standard pattern. + Pattern *string `json:"pattern,omitempty" tf:"pattern,omitempty"` + + // (String) Id of the standard pattern the rule refers to. If provided, then pattern must not be provided. + // Id of the standard pattern the rule refers to. If provided, then pattern must not be provided. + StandardPatternID *string `json:"standardPatternId,omitempty" tf:"standard_pattern_id,omitempty"` + + // (List of String) List of tags. + // List of tags. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Block List, Max: 1) Object describing how the scanned event will be replaced. Defaults to type: none (see below for nested schema) + // Object describing how the scanned event will be replaced. Defaults to `type: none` + TextReplacement []TextReplacementObservation `json:"textReplacement,omitempty" tf:"text_replacement,omitempty"` +} + +type RuleParameters struct { + + // (String) Description of the rule. + // Description of the rule. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // path of the namespaces array. + // Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. + // +kubebuilder:validation:Optional + ExcludedNamespaces []*string `json:"excludedNamespaces,omitempty" tf:"excluded_namespaces,omitempty"` + + // (String) Id of the scanning group the rule belongs to. + // Id of the scanning group the rule belongs to. + // +kubebuilder:validation:Optional + GroupID *string `json:"groupId,omitempty" tf:"group_id,omitempty"` + + // argument to true is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. (see below for nested schema) + // Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. + // +kubebuilder:validation:Optional + IncludedKeywordConfiguration []IncludedKeywordConfigurationParameters `json:"includedKeywordConfiguration,omitempty" tf:"included_keyword_configuration,omitempty"` + + // (Boolean) Whether or not the rule is enabled. + // Whether or not the rule is enabled. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // (String) Name of the rule. + // Name of the rule. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. + // Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. + // +kubebuilder:validation:Optional + Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + + // (String) Not included if there is a relationship to a standard pattern. + // Not included if there is a relationship to a standard pattern. + // +kubebuilder:validation:Optional + Pattern *string `json:"pattern,omitempty" tf:"pattern,omitempty"` + + // (String) Id of the standard pattern the rule refers to. If provided, then pattern must not be provided. + // Id of the standard pattern the rule refers to. If provided, then pattern must not be provided. + // +kubebuilder:validation:Optional + StandardPatternID *string `json:"standardPatternId,omitempty" tf:"standard_pattern_id,omitempty"` + + // (List of String) List of tags. + // List of tags. + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (Block List, Max: 1) Object describing how the scanned event will be replaced. Defaults to type: none (see below for nested schema) + // Object describing how the scanned event will be replaced. Defaults to `type: none` + // +kubebuilder:validation:Optional + TextReplacement []TextReplacementParameters `json:"textReplacement,omitempty" tf:"text_replacement,omitempty"` +} + +type TextReplacementInitParameters struct { + + // (Number) Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be > 0. + // Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be > 0. + NumberOfChars *float64 `json:"numberOfChars,omitempty" tf:"number_of_chars,omitempty"` + + // (String) Required if type == 'replacement_string'. + // Required if type == 'replacement_string'. + ReplacementString *string `json:"replacementString,omitempty" tf:"replacement_string,omitempty"` + + // (String) Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are none, hash, replacement_string, partial_replacement_from_beginning, partial_replacement_from_end. + // Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are `none`, `hash`, `replacement_string`, `partial_replacement_from_beginning`, `partial_replacement_from_end`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type TextReplacementObservation struct { + + // (Number) Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be > 0. + // Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be > 0. + NumberOfChars *float64 `json:"numberOfChars,omitempty" tf:"number_of_chars,omitempty"` + + // (String) Required if type == 'replacement_string'. + // Required if type == 'replacement_string'. + ReplacementString *string `json:"replacementString,omitempty" tf:"replacement_string,omitempty"` + + // (String) Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are none, hash, replacement_string, partial_replacement_from_beginning, partial_replacement_from_end. + // Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are `none`, `hash`, `replacement_string`, `partial_replacement_from_beginning`, `partial_replacement_from_end`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type TextReplacementParameters struct { + + // (Number) Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be > 0. + // Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be > 0. + // +kubebuilder:validation:Optional + NumberOfChars *float64 `json:"numberOfChars,omitempty" tf:"number_of_chars,omitempty"` + + // (String) Required if type == 'replacement_string'. + // Required if type == 'replacement_string'. + // +kubebuilder:validation:Optional + ReplacementString *string `json:"replacementString,omitempty" tf:"replacement_string,omitempty"` + + // (String) Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are none, hash, replacement_string, partial_replacement_from_beginning, partial_replacement_from_end. + // Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are `none`, `hash`, `replacement_string`, `partial_replacement_from_beginning`, `partial_replacement_from_end`. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + +// RuleSpec defines the desired state of Rule +type RuleSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider RuleParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RuleInitParameters `json:"initProvider,omitempty"` +} + +// RuleStatus defines the observed state of Rule. +type RuleStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider RuleObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// Rule is the Schema for the Rules API. Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitivedatascanner_rule. Setting the create_before_destroy lifecycle Meta-argument to true is highly recommended if modifying the included_keyword_configuration field to avoid unexpectedly disabling Sensitive Data Scanner groups. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type Rule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.groupId) || (has(self.initProvider) && has(self.initProvider.groupId))",message="spec.forProvider.groupId is a required parameter" + Spec RuleSpec `json:"spec"` + Status RuleStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// RuleList contains a list of Rules +type RuleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Rule `json:"items"` +} + +// Repository type metadata. +var ( + Rule_Kind = "Rule" + Rule_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Rule_Kind}.String() + Rule_KindAPIVersion = Rule_Kind + "." + CRDGroupVersion.String() + Rule_GroupVersionKind = CRDGroupVersion.WithKind(Rule_Kind) +) + +func init() { + SchemeBuilder.Register(&Rule{}, &RuleList{}) +} diff --git a/apis/synthetics/v1alpha1/zz_concurrencycap_terraformed.go b/apis/synthetics/v1alpha1/zz_concurrencycap_terraformed.go new file mode 100755 index 0000000..0dfdfd7 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_concurrencycap_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this ConcurrencyCap +func (mg *ConcurrencyCap) GetTerraformResourceType() string { + return "datadog_synthetics_concurrency_cap" +} + +// GetConnectionDetailsMapping for this ConcurrencyCap +func (tr *ConcurrencyCap) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ConcurrencyCap +func (tr *ConcurrencyCap) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this ConcurrencyCap +func (tr *ConcurrencyCap) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this ConcurrencyCap +func (tr *ConcurrencyCap) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ConcurrencyCap +func (tr *ConcurrencyCap) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this ConcurrencyCap +func (tr *ConcurrencyCap) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this ConcurrencyCap +func (tr *ConcurrencyCap) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this ConcurrencyCap +func (tr *ConcurrencyCap) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this ConcurrencyCap using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ConcurrencyCap) LateInitialize(attrs []byte) (bool, error) { + params := &ConcurrencyCapParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *ConcurrencyCap) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/synthetics/v1alpha1/zz_concurrencycap_types.go b/apis/synthetics/v1alpha1/zz_concurrencycap_types.go new file mode 100755 index 0000000..3c9775b --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_concurrencycap_types.go @@ -0,0 +1,105 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type ConcurrencyCapInitParameters struct { + + // demand concurrency cap, customizing the number of Synthetic tests run in parallel. + // Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. + OnDemandConcurrencyCap *float64 `json:"onDemandConcurrencyCap,omitempty" tf:"on_demand_concurrency_cap,omitempty"` +} + +type ConcurrencyCapObservation struct { + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // demand concurrency cap, customizing the number of Synthetic tests run in parallel. + // Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. + OnDemandConcurrencyCap *float64 `json:"onDemandConcurrencyCap,omitempty" tf:"on_demand_concurrency_cap,omitempty"` +} + +type ConcurrencyCapParameters struct { + + // demand concurrency cap, customizing the number of Synthetic tests run in parallel. + // Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. + // +kubebuilder:validation:Optional + OnDemandConcurrencyCap *float64 `json:"onDemandConcurrencyCap,omitempty" tf:"on_demand_concurrency_cap,omitempty"` +} + +// ConcurrencyCapSpec defines the desired state of ConcurrencyCap +type ConcurrencyCapSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider ConcurrencyCapParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ConcurrencyCapInitParameters `json:"initProvider,omitempty"` +} + +// ConcurrencyCapStatus defines the observed state of ConcurrencyCap. +type ConcurrencyCapStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider ConcurrencyCapObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// ConcurrencyCap is the Schema for the ConcurrencyCaps API. Provides a Datadog Synthetics On Demand Concurrency Cap API resource. This can be used to manage the Concurrency Cap for Synthetic tests. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type ConcurrencyCap struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.onDemandConcurrencyCap) || (has(self.initProvider) && has(self.initProvider.onDemandConcurrencyCap))",message="spec.forProvider.onDemandConcurrencyCap is a required parameter" + Spec ConcurrencyCapSpec `json:"spec"` + Status ConcurrencyCapStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// ConcurrencyCapList contains a list of ConcurrencyCaps +type ConcurrencyCapList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ConcurrencyCap `json:"items"` +} + +// Repository type metadata. +var ( + ConcurrencyCap_Kind = "ConcurrencyCap" + ConcurrencyCap_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ConcurrencyCap_Kind}.String() + ConcurrencyCap_KindAPIVersion = ConcurrencyCap_Kind + "." + CRDGroupVersion.String() + ConcurrencyCap_GroupVersionKind = CRDGroupVersion.WithKind(ConcurrencyCap_Kind) +) + +func init() { + SchemeBuilder.Register(&ConcurrencyCap{}, &ConcurrencyCapList{}) +} diff --git a/apis/synthetics/v1alpha1/zz_generated.conversion_hubs.go b/apis/synthetics/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..dc93e47 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *ConcurrencyCap) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *GlobalVariable) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *PrivateLocation) Hub() {} diff --git a/apis/synthetics/v1alpha1/zz_generated.deepcopy.go b/apis/synthetics/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..b0e1198 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,1118 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConcurrencyCap) DeepCopyInto(out *ConcurrencyCap) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConcurrencyCap. +func (in *ConcurrencyCap) DeepCopy() *ConcurrencyCap { + if in == nil { + return nil + } + out := new(ConcurrencyCap) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConcurrencyCap) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConcurrencyCapInitParameters) DeepCopyInto(out *ConcurrencyCapInitParameters) { + *out = *in + if in.OnDemandConcurrencyCap != nil { + in, out := &in.OnDemandConcurrencyCap, &out.OnDemandConcurrencyCap + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConcurrencyCapInitParameters. +func (in *ConcurrencyCapInitParameters) DeepCopy() *ConcurrencyCapInitParameters { + if in == nil { + return nil + } + out := new(ConcurrencyCapInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConcurrencyCapList) DeepCopyInto(out *ConcurrencyCapList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConcurrencyCap, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConcurrencyCapList. +func (in *ConcurrencyCapList) DeepCopy() *ConcurrencyCapList { + if in == nil { + return nil + } + out := new(ConcurrencyCapList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConcurrencyCapList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConcurrencyCapObservation) DeepCopyInto(out *ConcurrencyCapObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.OnDemandConcurrencyCap != nil { + in, out := &in.OnDemandConcurrencyCap, &out.OnDemandConcurrencyCap + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConcurrencyCapObservation. +func (in *ConcurrencyCapObservation) DeepCopy() *ConcurrencyCapObservation { + if in == nil { + return nil + } + out := new(ConcurrencyCapObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConcurrencyCapParameters) DeepCopyInto(out *ConcurrencyCapParameters) { + *out = *in + if in.OnDemandConcurrencyCap != nil { + in, out := &in.OnDemandConcurrencyCap, &out.OnDemandConcurrencyCap + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConcurrencyCapParameters. +func (in *ConcurrencyCapParameters) DeepCopy() *ConcurrencyCapParameters { + if in == nil { + return nil + } + out := new(ConcurrencyCapParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConcurrencyCapSpec) DeepCopyInto(out *ConcurrencyCapSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConcurrencyCapSpec. +func (in *ConcurrencyCapSpec) DeepCopy() *ConcurrencyCapSpec { + if in == nil { + return nil + } + out := new(ConcurrencyCapSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConcurrencyCapStatus) DeepCopyInto(out *ConcurrencyCapStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConcurrencyCapStatus. +func (in *ConcurrencyCapStatus) DeepCopy() *ConcurrencyCapStatus { + if in == nil { + return nil + } + out := new(ConcurrencyCapStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVariable) DeepCopyInto(out *GlobalVariable) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariable. +func (in *GlobalVariable) DeepCopy() *GlobalVariable { + if in == nil { + return nil + } + out := new(GlobalVariable) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GlobalVariable) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVariableInitParameters) DeepCopyInto(out *GlobalVariableInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]OptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ParseTestID != nil { + in, out := &in.ParseTestID, &out.ParseTestID + *out = new(string) + **out = **in + } + if in.ParseTestOptions != nil { + in, out := &in.ParseTestOptions, &out.ParseTestOptions + *out = make([]ParseTestOptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableInitParameters. +func (in *GlobalVariableInitParameters) DeepCopy() *GlobalVariableInitParameters { + if in == nil { + return nil + } + out := new(GlobalVariableInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVariableList) DeepCopyInto(out *GlobalVariableList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]GlobalVariable, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableList. +func (in *GlobalVariableList) DeepCopy() *GlobalVariableList { + if in == nil { + return nil + } + out := new(GlobalVariableList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GlobalVariableList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVariableObservation) DeepCopyInto(out *GlobalVariableObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]OptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ParseTestID != nil { + in, out := &in.ParseTestID, &out.ParseTestID + *out = new(string) + **out = **in + } + if in.ParseTestOptions != nil { + in, out := &in.ParseTestOptions, &out.ParseTestOptions + *out = make([]ParseTestOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableObservation. +func (in *GlobalVariableObservation) DeepCopy() *GlobalVariableObservation { + if in == nil { + return nil + } + out := new(GlobalVariableObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVariableParameters) DeepCopyInto(out *GlobalVariableParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make([]OptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ParseTestID != nil { + in, out := &in.ParseTestID, &out.ParseTestID + *out = new(string) + **out = **in + } + if in.ParseTestOptions != nil { + in, out := &in.ParseTestOptions, &out.ParseTestOptions + *out = make([]ParseTestOptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + out.ValueSecretRef = in.ValueSecretRef +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableParameters. +func (in *GlobalVariableParameters) DeepCopy() *GlobalVariableParameters { + if in == nil { + return nil + } + out := new(GlobalVariableParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVariableSpec) DeepCopyInto(out *GlobalVariableSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableSpec. +func (in *GlobalVariableSpec) DeepCopy() *GlobalVariableSpec { + if in == nil { + return nil + } + out := new(GlobalVariableSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVariableStatus) DeepCopyInto(out *GlobalVariableStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableStatus. +func (in *GlobalVariableStatus) DeepCopy() *GlobalVariableStatus { + if in == nil { + return nil + } + out := new(GlobalVariableStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataInitParameters) DeepCopyInto(out *MetadataInitParameters) { + *out = *in + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataInitParameters. +func (in *MetadataInitParameters) DeepCopy() *MetadataInitParameters { + if in == nil { + return nil + } + out := new(MetadataInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataObservation) DeepCopyInto(out *MetadataObservation) { + *out = *in + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataObservation. +func (in *MetadataObservation) DeepCopy() *MetadataObservation { + if in == nil { + return nil + } + out := new(MetadataObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataParameters) DeepCopyInto(out *MetadataParameters) { + *out = *in + if in.RestrictedRoles != nil { + in, out := &in.RestrictedRoles, &out.RestrictedRoles + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataParameters. +func (in *MetadataParameters) DeepCopy() *MetadataParameters { + if in == nil { + return nil + } + out := new(MetadataParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsInitParameters) DeepCopyInto(out *OptionsInitParameters) { + *out = *in + if in.TotpParameters != nil { + in, out := &in.TotpParameters, &out.TotpParameters + *out = make([]TotpParametersInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsInitParameters. +func (in *OptionsInitParameters) DeepCopy() *OptionsInitParameters { + if in == nil { + return nil + } + out := new(OptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsObservation) DeepCopyInto(out *OptionsObservation) { + *out = *in + if in.TotpParameters != nil { + in, out := &in.TotpParameters, &out.TotpParameters + *out = make([]TotpParametersObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsObservation. +func (in *OptionsObservation) DeepCopy() *OptionsObservation { + if in == nil { + return nil + } + out := new(OptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsParameters) DeepCopyInto(out *OptionsParameters) { + *out = *in + if in.TotpParameters != nil { + in, out := &in.TotpParameters, &out.TotpParameters + *out = make([]TotpParametersParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsParameters. +func (in *OptionsParameters) DeepCopy() *OptionsParameters { + if in == nil { + return nil + } + out := new(OptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParseTestOptionsInitParameters) DeepCopyInto(out *ParseTestOptionsInitParameters) { + *out = *in + if in.Field != nil { + in, out := &in.Field, &out.Field + *out = new(string) + **out = **in + } + if in.LocalVariableName != nil { + in, out := &in.LocalVariableName, &out.LocalVariableName + *out = new(string) + **out = **in + } + if in.Parser != nil { + in, out := &in.Parser, &out.Parser + *out = make([]ParserInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParseTestOptionsInitParameters. +func (in *ParseTestOptionsInitParameters) DeepCopy() *ParseTestOptionsInitParameters { + if in == nil { + return nil + } + out := new(ParseTestOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParseTestOptionsObservation) DeepCopyInto(out *ParseTestOptionsObservation) { + *out = *in + if in.Field != nil { + in, out := &in.Field, &out.Field + *out = new(string) + **out = **in + } + if in.LocalVariableName != nil { + in, out := &in.LocalVariableName, &out.LocalVariableName + *out = new(string) + **out = **in + } + if in.Parser != nil { + in, out := &in.Parser, &out.Parser + *out = make([]ParserObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParseTestOptionsObservation. +func (in *ParseTestOptionsObservation) DeepCopy() *ParseTestOptionsObservation { + if in == nil { + return nil + } + out := new(ParseTestOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParseTestOptionsParameters) DeepCopyInto(out *ParseTestOptionsParameters) { + *out = *in + if in.Field != nil { + in, out := &in.Field, &out.Field + *out = new(string) + **out = **in + } + if in.LocalVariableName != nil { + in, out := &in.LocalVariableName, &out.LocalVariableName + *out = new(string) + **out = **in + } + if in.Parser != nil { + in, out := &in.Parser, &out.Parser + *out = make([]ParserParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParseTestOptionsParameters. +func (in *ParseTestOptionsParameters) DeepCopy() *ParseTestOptionsParameters { + if in == nil { + return nil + } + out := new(ParseTestOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParserInitParameters) DeepCopyInto(out *ParserInitParameters) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParserInitParameters. +func (in *ParserInitParameters) DeepCopy() *ParserInitParameters { + if in == nil { + return nil + } + out := new(ParserInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParserObservation) DeepCopyInto(out *ParserObservation) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParserObservation. +func (in *ParserObservation) DeepCopy() *ParserObservation { + if in == nil { + return nil + } + out := new(ParserObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParserParameters) DeepCopyInto(out *ParserParameters) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParserParameters. +func (in *ParserParameters) DeepCopy() *ParserParameters { + if in == nil { + return nil + } + out := new(ParserParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateLocation) DeepCopyInto(out *PrivateLocation) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLocation. +func (in *PrivateLocation) DeepCopy() *PrivateLocation { + if in == nil { + return nil + } + out := new(PrivateLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PrivateLocation) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateLocationInitParameters) DeepCopyInto(out *PrivateLocationInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make([]MetadataInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLocationInitParameters. +func (in *PrivateLocationInitParameters) DeepCopy() *PrivateLocationInitParameters { + if in == nil { + return nil + } + out := new(PrivateLocationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateLocationList) DeepCopyInto(out *PrivateLocationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PrivateLocation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLocationList. +func (in *PrivateLocationList) DeepCopy() *PrivateLocationList { + if in == nil { + return nil + } + out := new(PrivateLocationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PrivateLocationList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateLocationObservation) DeepCopyInto(out *PrivateLocationObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make([]MetadataObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLocationObservation. +func (in *PrivateLocationObservation) DeepCopy() *PrivateLocationObservation { + if in == nil { + return nil + } + out := new(PrivateLocationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateLocationParameters) DeepCopyInto(out *PrivateLocationParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make([]MetadataParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLocationParameters. +func (in *PrivateLocationParameters) DeepCopy() *PrivateLocationParameters { + if in == nil { + return nil + } + out := new(PrivateLocationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateLocationSpec) DeepCopyInto(out *PrivateLocationSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLocationSpec. +func (in *PrivateLocationSpec) DeepCopy() *PrivateLocationSpec { + if in == nil { + return nil + } + out := new(PrivateLocationSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateLocationStatus) DeepCopyInto(out *PrivateLocationStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLocationStatus. +func (in *PrivateLocationStatus) DeepCopy() *PrivateLocationStatus { + if in == nil { + return nil + } + out := new(PrivateLocationStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TotpParametersInitParameters) DeepCopyInto(out *TotpParametersInitParameters) { + *out = *in + if in.Digits != nil { + in, out := &in.Digits, &out.Digits + *out = new(float64) + **out = **in + } + if in.RefreshInterval != nil { + in, out := &in.RefreshInterval, &out.RefreshInterval + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TotpParametersInitParameters. +func (in *TotpParametersInitParameters) DeepCopy() *TotpParametersInitParameters { + if in == nil { + return nil + } + out := new(TotpParametersInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TotpParametersObservation) DeepCopyInto(out *TotpParametersObservation) { + *out = *in + if in.Digits != nil { + in, out := &in.Digits, &out.Digits + *out = new(float64) + **out = **in + } + if in.RefreshInterval != nil { + in, out := &in.RefreshInterval, &out.RefreshInterval + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TotpParametersObservation. +func (in *TotpParametersObservation) DeepCopy() *TotpParametersObservation { + if in == nil { + return nil + } + out := new(TotpParametersObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TotpParametersParameters) DeepCopyInto(out *TotpParametersParameters) { + *out = *in + if in.Digits != nil { + in, out := &in.Digits, &out.Digits + *out = new(float64) + **out = **in + } + if in.RefreshInterval != nil { + in, out := &in.RefreshInterval, &out.RefreshInterval + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TotpParametersParameters. +func (in *TotpParametersParameters) DeepCopy() *TotpParametersParameters { + if in == nil { + return nil + } + out := new(TotpParametersParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/synthetics/v1alpha1/zz_generated.managed.go b/apis/synthetics/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..7168319 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_generated.managed.go @@ -0,0 +1,188 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this ConcurrencyCap. +func (mg *ConcurrencyCap) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ConcurrencyCap. +func (mg *ConcurrencyCap) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ConcurrencyCap. +func (mg *ConcurrencyCap) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ConcurrencyCap. +func (mg *ConcurrencyCap) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ConcurrencyCap. +func (mg *ConcurrencyCap) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ConcurrencyCap. +func (mg *ConcurrencyCap) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ConcurrencyCap. +func (mg *ConcurrencyCap) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ConcurrencyCap. +func (mg *ConcurrencyCap) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ConcurrencyCap. +func (mg *ConcurrencyCap) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ConcurrencyCap. +func (mg *ConcurrencyCap) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ConcurrencyCap. +func (mg *ConcurrencyCap) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ConcurrencyCap. +func (mg *ConcurrencyCap) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this GlobalVariable. +func (mg *GlobalVariable) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this GlobalVariable. +func (mg *GlobalVariable) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this GlobalVariable. +func (mg *GlobalVariable) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this GlobalVariable. +func (mg *GlobalVariable) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this GlobalVariable. +func (mg *GlobalVariable) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this GlobalVariable. +func (mg *GlobalVariable) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this GlobalVariable. +func (mg *GlobalVariable) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this GlobalVariable. +func (mg *GlobalVariable) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this GlobalVariable. +func (mg *GlobalVariable) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this GlobalVariable. +func (mg *GlobalVariable) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this GlobalVariable. +func (mg *GlobalVariable) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this GlobalVariable. +func (mg *GlobalVariable) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this PrivateLocation. +func (mg *PrivateLocation) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this PrivateLocation. +func (mg *PrivateLocation) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this PrivateLocation. +func (mg *PrivateLocation) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this PrivateLocation. +func (mg *PrivateLocation) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this PrivateLocation. +func (mg *PrivateLocation) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this PrivateLocation. +func (mg *PrivateLocation) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this PrivateLocation. +func (mg *PrivateLocation) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this PrivateLocation. +func (mg *PrivateLocation) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this PrivateLocation. +func (mg *PrivateLocation) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this PrivateLocation. +func (mg *PrivateLocation) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this PrivateLocation. +func (mg *PrivateLocation) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this PrivateLocation. +func (mg *PrivateLocation) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/synthetics/v1alpha1/zz_generated.managedlist.go b/apis/synthetics/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..cdefc5c --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,35 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ConcurrencyCapList. +func (l *ConcurrencyCapList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this GlobalVariableList. +func (l *GlobalVariableList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} + +// GetItems of this PrivateLocationList. +func (l *PrivateLocationList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/synthetics/v1alpha1/zz_globalvariable_terraformed.go b/apis/synthetics/v1alpha1/zz_globalvariable_terraformed.go new file mode 100755 index 0000000..2b18035 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_globalvariable_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this GlobalVariable +func (mg *GlobalVariable) GetTerraformResourceType() string { + return "datadog_synthetics_global_variable" +} + +// GetConnectionDetailsMapping for this GlobalVariable +func (tr *GlobalVariable) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"value": "spec.forProvider.valueSecretRef"} +} + +// GetObservation of this GlobalVariable +func (tr *GlobalVariable) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this GlobalVariable +func (tr *GlobalVariable) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this GlobalVariable +func (tr *GlobalVariable) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this GlobalVariable +func (tr *GlobalVariable) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this GlobalVariable +func (tr *GlobalVariable) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this GlobalVariable +func (tr *GlobalVariable) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this GlobalVariable +func (tr *GlobalVariable) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this GlobalVariable using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *GlobalVariable) LateInitialize(attrs []byte) (bool, error) { + params := &GlobalVariableParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *GlobalVariable) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/synthetics/v1alpha1/zz_globalvariable_types.go b/apis/synthetics/v1alpha1/zz_globalvariable_types.go new file mode 100755 index 0000000..f76dda4 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_globalvariable_types.go @@ -0,0 +1,355 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type GlobalVariableInitParameters struct { + + // (String) Description of the global variable. + // Description of the global variable. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) Synthetics global variable name. + // Synthetics global variable name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Additional options for the variable, such as a MFA token. (see below for nested schema) + // Additional options for the variable, such as a MFA token. + Options []OptionsInitParameters `json:"options,omitempty" tf:"options,omitempty"` + + // (String) Id of the Synthetics test to use for a variable from test. + // Id of the Synthetics test to use for a variable from test. + ParseTestID *string `json:"parseTestId,omitempty" tf:"parse_test_id,omitempty"` + + // (Block List, Max: 1) ID of the Synthetics test to use a source of the global variable value. (see below for nested schema) + // ID of the Synthetics test to use a source of the global variable value. + ParseTestOptions []ParseTestOptionsInitParameters `json:"parseTestOptions,omitempty" tf:"parse_test_options,omitempty"` + + // (Set of String) A list of role identifiers to associate with the Synthetics global variable. + // A list of role identifiers to associate with the Synthetics global variable. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Boolean) If set to true, the value of the global variable is hidden. Defaults to false. + // If set to true, the value of the global variable is hidden. Defaults to `false`. + Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` + + // (List of String) A list of tags to associate with your synthetics global variable. + // A list of tags to associate with your synthetics global variable. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type GlobalVariableObservation struct { + + // (String) Description of the global variable. + // Description of the global variable. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) Synthetics global variable name. + // Synthetics global variable name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Additional options for the variable, such as a MFA token. (see below for nested schema) + // Additional options for the variable, such as a MFA token. + Options []OptionsObservation `json:"options,omitempty" tf:"options,omitempty"` + + // (String) Id of the Synthetics test to use for a variable from test. + // Id of the Synthetics test to use for a variable from test. + ParseTestID *string `json:"parseTestId,omitempty" tf:"parse_test_id,omitempty"` + + // (Block List, Max: 1) ID of the Synthetics test to use a source of the global variable value. (see below for nested schema) + // ID of the Synthetics test to use a source of the global variable value. + ParseTestOptions []ParseTestOptionsObservation `json:"parseTestOptions,omitempty" tf:"parse_test_options,omitempty"` + + // (Set of String) A list of role identifiers to associate with the Synthetics global variable. + // A list of role identifiers to associate with the Synthetics global variable. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Boolean) If set to true, the value of the global variable is hidden. Defaults to false. + // If set to true, the value of the global variable is hidden. Defaults to `false`. + Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` + + // (List of String) A list of tags to associate with your synthetics global variable. + // A list of tags to associate with your synthetics global variable. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type GlobalVariableParameters struct { + + // (String) Description of the global variable. + // Description of the global variable. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) Synthetics global variable name. + // Synthetics global variable name. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Block List, Max: 1) Additional options for the variable, such as a MFA token. (see below for nested schema) + // Additional options for the variable, such as a MFA token. + // +kubebuilder:validation:Optional + Options []OptionsParameters `json:"options,omitempty" tf:"options,omitempty"` + + // (String) Id of the Synthetics test to use for a variable from test. + // Id of the Synthetics test to use for a variable from test. + // +kubebuilder:validation:Optional + ParseTestID *string `json:"parseTestId,omitempty" tf:"parse_test_id,omitempty"` + + // (Block List, Max: 1) ID of the Synthetics test to use a source of the global variable value. (see below for nested schema) + // ID of the Synthetics test to use a source of the global variable value. + // +kubebuilder:validation:Optional + ParseTestOptions []ParseTestOptionsParameters `json:"parseTestOptions,omitempty" tf:"parse_test_options,omitempty"` + + // (Set of String) A list of role identifiers to associate with the Synthetics global variable. + // A list of role identifiers to associate with the Synthetics global variable. + // +kubebuilder:validation:Optional + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Boolean) If set to true, the value of the global variable is hidden. Defaults to false. + // If set to true, the value of the global variable is hidden. Defaults to `false`. + // +kubebuilder:validation:Optional + Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` + + // (List of String) A list of tags to associate with your synthetics global variable. + // A list of tags to associate with your synthetics global variable. + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // (String, Sensitive) The value of the global variable. + // The value of the global variable. + // +kubebuilder:validation:Optional + ValueSecretRef v1.SecretKeySelector `json:"valueSecretRef" tf:"-"` +} + +type OptionsInitParameters struct { + + // (Block List, Max: 1) Parameters needed for MFA/TOTP. (see below for nested schema) + // Parameters needed for MFA/TOTP. + TotpParameters []TotpParametersInitParameters `json:"totpParameters,omitempty" tf:"totp_parameters,omitempty"` +} + +type OptionsObservation struct { + + // (Block List, Max: 1) Parameters needed for MFA/TOTP. (see below for nested schema) + // Parameters needed for MFA/TOTP. + TotpParameters []TotpParametersObservation `json:"totpParameters,omitempty" tf:"totp_parameters,omitempty"` +} + +type OptionsParameters struct { + + // (Block List, Max: 1) Parameters needed for MFA/TOTP. (see below for nested schema) + // Parameters needed for MFA/TOTP. + // +kubebuilder:validation:Optional + TotpParameters []TotpParametersParameters `json:"totpParameters,omitempty" tf:"totp_parameters,omitempty"` +} + +type ParseTestOptionsInitParameters struct { + + // (String) Required when type = http_header. Defines the header to use to extract the value + // Required when type = `http_header`. Defines the header to use to extract the value + Field *string `json:"field,omitempty" tf:"field,omitempty"` + + // (String) When type is local_variable, name of the local variable to use to extract the value. + // When type is `local_variable`, name of the local variable to use to extract the value. + LocalVariableName *string `json:"localVariableName,omitempty" tf:"local_variable_name,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Parser []ParserInitParameters `json:"parser,omitempty" tf:"parser,omitempty"` + + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, local_variable. + // Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `local_variable`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ParseTestOptionsObservation struct { + + // (String) Required when type = http_header. Defines the header to use to extract the value + // Required when type = `http_header`. Defines the header to use to extract the value + Field *string `json:"field,omitempty" tf:"field,omitempty"` + + // (String) When type is local_variable, name of the local variable to use to extract the value. + // When type is `local_variable`, name of the local variable to use to extract the value. + LocalVariableName *string `json:"localVariableName,omitempty" tf:"local_variable_name,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Parser []ParserObservation `json:"parser,omitempty" tf:"parser,omitempty"` + + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, local_variable. + // Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `local_variable`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ParseTestOptionsParameters struct { + + // (String) Required when type = http_header. Defines the header to use to extract the value + // Required when type = `http_header`. Defines the header to use to extract the value + // +kubebuilder:validation:Optional + Field *string `json:"field,omitempty" tf:"field,omitempty"` + + // (String) When type is local_variable, name of the local variable to use to extract the value. + // When type is `local_variable`, name of the local variable to use to extract the value. + // +kubebuilder:validation:Optional + LocalVariableName *string `json:"localVariableName,omitempty" tf:"local_variable_name,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Parser []ParserParameters `json:"parser,omitempty" tf:"parser,omitempty"` + + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, local_variable. + // Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `local_variable`. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + +type ParserInitParameters struct { + + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, local_variable. + // Type of parser to extract the value. Valid values are `raw`, `json_path`, `regex`, `x_path`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String, Sensitive) The value of the global variable. + // Value for the parser to use, required for type `json_path` or `regex`. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type ParserObservation struct { + + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, local_variable. + // Type of parser to extract the value. Valid values are `raw`, `json_path`, `regex`, `x_path`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String, Sensitive) The value of the global variable. + // Value for the parser to use, required for type `json_path` or `regex`. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type ParserParameters struct { + + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, local_variable. + // Type of parser to extract the value. Valid values are `raw`, `json_path`, `regex`, `x_path`. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` + + // (String, Sensitive) The value of the global variable. + // Value for the parser to use, required for type `json_path` or `regex`. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TotpParametersInitParameters struct { + + // (Number) Number of digits for the OTP. + // Number of digits for the OTP. + Digits *float64 `json:"digits,omitempty" tf:"digits,omitempty"` + + // (Number) Interval for which to refresh the token (in seconds). + // Interval for which to refresh the token (in seconds). + RefreshInterval *float64 `json:"refreshInterval,omitempty" tf:"refresh_interval,omitempty"` +} + +type TotpParametersObservation struct { + + // (Number) Number of digits for the OTP. + // Number of digits for the OTP. + Digits *float64 `json:"digits,omitempty" tf:"digits,omitempty"` + + // (Number) Interval for which to refresh the token (in seconds). + // Interval for which to refresh the token (in seconds). + RefreshInterval *float64 `json:"refreshInterval,omitempty" tf:"refresh_interval,omitempty"` +} + +type TotpParametersParameters struct { + + // (Number) Number of digits for the OTP. + // Number of digits for the OTP. + // +kubebuilder:validation:Optional + Digits *float64 `json:"digits" tf:"digits,omitempty"` + + // (Number) Interval for which to refresh the token (in seconds). + // Interval for which to refresh the token (in seconds). + // +kubebuilder:validation:Optional + RefreshInterval *float64 `json:"refreshInterval" tf:"refresh_interval,omitempty"` +} + +// GlobalVariableSpec defines the desired state of GlobalVariable +type GlobalVariableSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider GlobalVariableParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider GlobalVariableInitParameters `json:"initProvider,omitempty"` +} + +// GlobalVariableStatus defines the observed state of GlobalVariable. +type GlobalVariableStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider GlobalVariableObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// GlobalVariable is the Schema for the GlobalVariables API. Provides a Datadog synthetics global variable resource. This can be used to create and manage Datadog synthetics global variables. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type GlobalVariable struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.valueSecretRef)",message="spec.forProvider.valueSecretRef is a required parameter" + Spec GlobalVariableSpec `json:"spec"` + Status GlobalVariableStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// GlobalVariableList contains a list of GlobalVariables +type GlobalVariableList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []GlobalVariable `json:"items"` +} + +// Repository type metadata. +var ( + GlobalVariable_Kind = "GlobalVariable" + GlobalVariable_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: GlobalVariable_Kind}.String() + GlobalVariable_KindAPIVersion = GlobalVariable_Kind + "." + CRDGroupVersion.String() + GlobalVariable_GroupVersionKind = CRDGroupVersion.WithKind(GlobalVariable_Kind) +) + +func init() { + SchemeBuilder.Register(&GlobalVariable{}, &GlobalVariableList{}) +} diff --git a/apis/synthetics/v1alpha1/zz_groupversion_info.go b/apis/synthetics/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..ed208a5 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=synthetics.datadog.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "synthetics.datadog.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/synthetics/v1alpha1/zz_privatelocation_terraformed.go b/apis/synthetics/v1alpha1/zz_privatelocation_terraformed.go new file mode 100755 index 0000000..5de1f88 --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_privatelocation_terraformed.go @@ -0,0 +1,133 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this PrivateLocation +func (mg *PrivateLocation) GetTerraformResourceType() string { + return "datadog_synthetics_private_location" +} + +// GetConnectionDetailsMapping for this PrivateLocation +func (tr *PrivateLocation) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"config": "status.atProvider.config"} +} + +// GetObservation of this PrivateLocation +func (tr *PrivateLocation) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this PrivateLocation +func (tr *PrivateLocation) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this PrivateLocation +func (tr *PrivateLocation) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this PrivateLocation +func (tr *PrivateLocation) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this PrivateLocation +func (tr *PrivateLocation) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this PrivateLocation +func (tr *PrivateLocation) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this PrivateLocation +func (tr *PrivateLocation) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this PrivateLocation using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *PrivateLocation) LateInitialize(attrs []byte) (bool, error) { + params := &PrivateLocationParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *PrivateLocation) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/synthetics/v1alpha1/zz_privatelocation_types.go b/apis/synthetics/v1alpha1/zz_privatelocation_types.go new file mode 100755 index 0000000..ef5985b --- /dev/null +++ b/apis/synthetics/v1alpha1/zz_privatelocation_types.go @@ -0,0 +1,169 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type MetadataInitParameters struct { + + // (Set of String) A list of role identifiers pulled from the Roles API to restrict read and write access. + // A list of role identifiers pulled from the Roles API to restrict read and write access. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` +} + +type MetadataObservation struct { + + // (Set of String) A list of role identifiers pulled from the Roles API to restrict read and write access. + // A list of role identifiers pulled from the Roles API to restrict read and write access. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` +} + +type MetadataParameters struct { + + // (Set of String) A list of role identifiers pulled from the Roles API to restrict read and write access. + // A list of role identifiers pulled from the Roles API to restrict read and write access. + // +kubebuilder:validation:Optional + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` +} + +type PrivateLocationInitParameters struct { + + // (String) Description of the private location. + // Description of the private location. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Block List, Max: 1) The private location metadata (see below for nested schema) + // The private location metadata + Metadata []MetadataInitParameters `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // (String) Synthetics private location name. + // Synthetics private location name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) A list of tags to associate with your synthetics private location. + // A list of tags to associate with your synthetics private location. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type PrivateLocationObservation struct { + + // (String) Description of the private location. + // Description of the private location. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (Block List, Max: 1) The private location metadata (see below for nested schema) + // The private location metadata + Metadata []MetadataObservation `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // (String) Synthetics private location name. + // Synthetics private location name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) A list of tags to associate with your synthetics private location. + // A list of tags to associate with your synthetics private location. + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +type PrivateLocationParameters struct { + + // (String) Description of the private location. + // Description of the private location. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Block List, Max: 1) The private location metadata (see below for nested schema) + // The private location metadata + // +kubebuilder:validation:Optional + Metadata []MetadataParameters `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // (String) Synthetics private location name. + // Synthetics private location name. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (List of String) A list of tags to associate with your synthetics private location. + // A list of tags to associate with your synthetics private location. + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` +} + +// PrivateLocationSpec defines the desired state of PrivateLocation +type PrivateLocationSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider PrivateLocationParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider PrivateLocationInitParameters `json:"initProvider,omitempty"` +} + +// PrivateLocationStatus defines the observed state of PrivateLocation. +type PrivateLocationStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider PrivateLocationObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// PrivateLocation is the Schema for the PrivateLocations API. Provides a Datadog synthetics private location resource. This can be used to create and manage Datadog synthetics private locations. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,datadog} +type PrivateLocation struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.name) || (has(self.initProvider) && has(self.initProvider.name))",message="spec.forProvider.name is a required parameter" + Spec PrivateLocationSpec `json:"spec"` + Status PrivateLocationStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PrivateLocationList contains a list of PrivateLocations +type PrivateLocationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []PrivateLocation `json:"items"` +} + +// Repository type metadata. +var ( + PrivateLocation_Kind = "PrivateLocation" + PrivateLocation_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: PrivateLocation_Kind}.String() + PrivateLocation_KindAPIVersion = PrivateLocation_Kind + "." + CRDGroupVersion.String() + PrivateLocation_GroupVersionKind = CRDGroupVersion.WithKind(PrivateLocation_Kind) +) + +func init() { + SchemeBuilder.Register(&PrivateLocation{}, &PrivateLocationList{}) +} diff --git a/apis/v1alpha1/doc.go b/apis/v1alpha1/doc.go index 468ffa7..535466e 100644 --- a/apis/v1alpha1/doc.go +++ b/apis/v1alpha1/doc.go @@ -2,8 +2,8 @@ Copyright 2021 Upbound Inc. */ -// Package v1alpha1 contains the core resources of the template jet provider. +// Package v1alpha1 contains the core resources of the datadog jet provider. // +kubebuilder:object:generate=true -// +groupName=template.upbound.io +// +groupName=datadog.upbound.io // +versionName=v1alpha1 package v1alpha1 diff --git a/apis/v1alpha1/register.go b/apis/v1alpha1/register.go index 038d8b3..a2946ed 100644 --- a/apis/v1alpha1/register.go +++ b/apis/v1alpha1/register.go @@ -13,7 +13,7 @@ import ( // Package type metadata. const ( - Group = "template.upbound.io" + Group = "datadog.upbound.io" Version = "v1alpha1" ) diff --git a/apis/v1alpha1/types.go b/apis/v1alpha1/types.go index 3f8f25a..9154a00 100644 --- a/apis/v1alpha1/types.go +++ b/apis/v1alpha1/types.go @@ -5,9 +5,8 @@ Copyright 2021 Upbound Inc. package v1alpha1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // A StoreConfigSpec defines the desired state of a ProviderConfig. @@ -22,11 +21,11 @@ type StoreConfigStatus struct { // +kubebuilder:object:root=true -// A StoreConfig configures how template controller should store connection details. +// A StoreConfig configures how datadog controller should store connection details. // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:printcolumn:name="TYPE",type="string",JSONPath=".spec.type" // +kubebuilder:printcolumn:name="DEFAULT-SCOPE",type="string",JSONPath=".spec.defaultScope" -// +kubebuilder:resource:scope=Cluster,categories={crossplane,store,template} +// +kubebuilder:resource:scope=Cluster,categories={crossplane,store,datadog} // +kubebuilder:subresource:status type StoreConfig struct { metav1.TypeMeta `json:",inline"` diff --git a/apis/v1beta1/doc.go b/apis/v1beta1/doc.go index 71a80b6..eaa9595 100644 --- a/apis/v1beta1/doc.go +++ b/apis/v1beta1/doc.go @@ -2,8 +2,8 @@ Copyright 2022 Upbound Inc. */ -// Package v1beta1 contains the core resources of the template upjet provider. +// Package v1beta1 contains the core resources of the datadog upjet provider. // +kubebuilder:object:generate=true -// +groupName=template.upbound.io +// +groupName=datadog.upbound.io // +versionName=v1beta1 package v1beta1 diff --git a/apis/v1beta1/register.go b/apis/v1beta1/register.go index a99c36e..032626e 100644 --- a/apis/v1beta1/register.go +++ b/apis/v1beta1/register.go @@ -13,7 +13,7 @@ import ( // Package type metadata. const ( - Group = "template.upbound.io" + Group = "datadog.upbound.io" Version = "v1beta1" ) diff --git a/apis/v1beta1/types.go b/apis/v1beta1/types.go index 110474a..7c3a8d9 100644 --- a/apis/v1beta1/types.go +++ b/apis/v1beta1/types.go @@ -5,14 +5,63 @@ Copyright 2022 Upbound Inc. package v1beta1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // A ProviderConfigSpec defines the desired state of a ProviderConfig. type ProviderConfigSpec struct { + // (String, Sensitive) (Required unless validate is false) Datadog API key. + // This can also be set via the DD_API_KEY environment variable. + // +optional + APIKey string `json:"api_key,omitempty"` + + // (String) The API URL. This can also be set via the DD_HOST environment + // variable. Note that this URL must not end with the /api/ path. For + // example, https://api.datadoghq.com/ is a correct value, while + // https://api.datadoghq.com/api/ is not. And if you're working with + // "EU" version of Datadog, use https://api.datadoghq.eu/. Other Datadog + // region examples: https://api.us5.datadoghq.com/, + // https://api.us3.datadoghq.com/ and https://api.ddog-gov.com/. + // See https://docs.datadoghq.com/getting_started/site/ for all available + // regions. + // +optional + APIUrl string `json:"api_url,omitempty"` + + // (String, Sensitive) (Required unless validate is false) Datadog APP key. + // This can also be set via the DD_APP_KEY environment variable. + // +optional + AppKey string `json:"app_key,omitempty"` + + // (Number) The HTTP request retry back off base. Defaults to 2. + // +optional + HTTPClientRetryBackoffBase int `json:"http_client_retry_backoff_base,omitempty"` + + // (Number) The HTTP request retry back off multiplier. Defaults to 2. + // +optional + HTTPClientRetryBackoffMultiplier int `json:"http_client_retry_backoff_multiplier,omitempty"` + + // (String) Enables request retries on HTTP status codes 429 and 5xx. + // Valid values are [true, false]. Defaults to true. + // +optional + HTTPClientRetryEnabled string `json:"http_client_retry_enabled,omitempty"` + + // (Number) The HTTP request maximum retry number. Defaults to 3. + // +optional + HTTPClientRetryMaxRetries int `json:"http_client_retry_max_retries,omitempty"` + + // (Number) The HTTP request retry timeout period. Defaults to 60 seconds. + // +optional + HTTPClientRetryTimeout int `json:"http_client_retry_timeout,omitempty"` + + // (String) Enables validation of the provided API key during provider + // initialization. Valid values are [true, false]. Default is true. + // When false, api_key won't be checked. + // +optional + Validate string `json:"validate,omitempty"` + // Credentials required to authenticate to this provider. + // +optional Credentials ProviderCredentials `json:"credentials"` } @@ -32,12 +81,12 @@ type ProviderConfigStatus struct { // +kubebuilder:object:root=true -// A ProviderConfig configures a Template provider. +// A ProviderConfig configures a Datadog provider. // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" // +kubebuilder:printcolumn:name="SECRET-NAME",type="string",JSONPath=".spec.credentials.secretRef.name",priority=1 // +kubebuilder:resource:scope=Cluster -// +kubebuilder:resource:scope=Cluster,categories={crossplane,provider,template} +// +kubebuilder:resource:scope=Cluster,categories={crossplane,provider,datadog} type ProviderConfig struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -62,7 +111,7 @@ type ProviderConfigList struct { // +kubebuilder:printcolumn:name="CONFIG-NAME",type="string",JSONPath=".providerConfigRef.name" // +kubebuilder:printcolumn:name="RESOURCE-KIND",type="string",JSONPath=".resourceRef.kind" // +kubebuilder:printcolumn:name="RESOURCE-NAME",type="string",JSONPath=".resourceRef.name" -// +kubebuilder:resource:scope=Cluster,categories={crossplane,provider,template} +// +kubebuilder:resource:scope=Cluster,categories={crossplane,provider,datadog} type ProviderConfigUsage struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` diff --git a/apis/zz_register.go b/apis/zz_register.go index 9a6d212..d26b91b 100755 --- a/apis/zz_register.go +++ b/apis/zz_register.go @@ -14,15 +14,31 @@ package apis import ( "k8s.io/apimachinery/pkg/runtime" - v1alpha1 "github.com/upbound/upjet-provider-template/apis/null/v1alpha1" - v1alpha1apis "github.com/upbound/upjet-provider-template/apis/v1alpha1" - v1beta1 "github.com/upbound/upjet-provider-template/apis/v1beta1" + v1alpha1 "github.com/upbound/provider-datadog/apis/apm/v1alpha1" + v1alpha1cloud "github.com/upbound/provider-datadog/apis/cloud/v1alpha1" + v1alpha1datadog "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + v1alpha1integration "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1alpha1logs "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1alpha1metric "github.com/upbound/provider-datadog/apis/metric/v1alpha1" + v1alpha1securitymonitoring "github.com/upbound/provider-datadog/apis/securitymonitoring/v1alpha1" + v1alpha1sensitivedatascanner "github.com/upbound/provider-datadog/apis/sensitivedatascanner/v1alpha1" + v1alpha1synthetics "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + v1alpha1apis "github.com/upbound/provider-datadog/apis/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/v1beta1" ) func init() { // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme, + v1alpha1cloud.SchemeBuilder.AddToScheme, + v1alpha1datadog.SchemeBuilder.AddToScheme, + v1alpha1integration.SchemeBuilder.AddToScheme, + v1alpha1logs.SchemeBuilder.AddToScheme, + v1alpha1metric.SchemeBuilder.AddToScheme, + v1alpha1securitymonitoring.SchemeBuilder.AddToScheme, + v1alpha1sensitivedatascanner.SchemeBuilder.AddToScheme, + v1alpha1synthetics.SchemeBuilder.AddToScheme, v1alpha1apis.SchemeBuilder.AddToScheme, v1beta1.SchemeBuilder.AddToScheme, ) diff --git a/cluster/images/upjet-provider-template/Dockerfile b/cluster/images/provider-datadog/Dockerfile similarity index 100% rename from cluster/images/upjet-provider-template/Dockerfile rename to cluster/images/provider-datadog/Dockerfile diff --git a/cluster/images/upjet-provider-template/Makefile b/cluster/images/provider-datadog/Makefile similarity index 100% rename from cluster/images/upjet-provider-template/Makefile rename to cluster/images/provider-datadog/Makefile diff --git a/cluster/images/upjet-provider-template/terraformrc.hcl b/cluster/images/provider-datadog/terraformrc.hcl similarity index 100% rename from cluster/images/upjet-provider-template/terraformrc.hcl rename to cluster/images/provider-datadog/terraformrc.hcl diff --git a/cluster/test/setup.sh b/cluster/test/setup.sh index f1138cc..66a5dd6 100755 --- a/cluster/test/setup.sh +++ b/cluster/test/setup.sh @@ -1,19 +1,15 @@ #!/usr/bin/env bash -set -aeuo pipefail +echo "setup.sh" -echo "Running setup.sh" -echo "Creating cloud credential secret..." -${KUBECTL} -n upbound-system create secret generic provider-secret --from-literal=credentials="${UPTEST_CLOUD_CREDENTIALS}" --dry-run=client -o yaml | ${KUBECTL} apply -f - +SCRIPT_DIR=$( cd -- $( dirname -- "${BASH_SOURCE[0]}" ) &> /dev/null && pwd ) -echo "Waiting until provider is healthy..." -${KUBECTL} wait provider.pkg --all --for condition=Healthy --timeout 5m - -echo "Waiting for all pods to come online..." -${KUBECTL} -n upbound-system wait --for=condition=Available deployment --all --timeout=5m +if [[ -n "${UPTEST_CLOUD_CREDENTIALS:-}" ]]; then + echo "Creating cloud credential secret..." + ${KUBECTL} -n upbound-system create secret generic provider-secret --from-literal=credentials="${UPTEST_CLOUD_CREDENTIALS}" --dry-run=client -o yaml | ${KUBECTL} apply -f - -echo "Creating a default provider config..." -cat <" + datadog_apm_retention_filter_order: + subCategory: "" + description: Provides a Datadog APM Retention Filters API https://docs.datadoghq.com/api/v2/apm-retention-filters/ resource, which is used to manage Datadog APM retention filters order. + name: datadog_apm_retention_filter_order + title: datadog_apm_retention_filter_order Resource - terraform-provider-datadog + examples: + - name: bar + manifest: |- + { + "filter_ids": [ + "${datadog_apm_retention_filter.foo.id}" + ] + } + dependencies: + datadog_apm_retention_filter.foo: |- + { + "enabled": false, + "filter": [ + { + "query": "*" + } + ], + "filter_type": "spans-sampling-processor", + "name": "Sample order", + "rate": "1.0" + } + argumentDocs: + filter_ids: (List of String) The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order. + id: (String) The ID of this resource. + importStatements: + - |- + # Import existing APM retention filter order + # Note: Value of can be anything as this id is not stored by the resource + terraform import datadog_apm_retention_filter_order.bar + datadog_application_key: + subCategory: "" + description: Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys. + name: datadog_application_key + title: datadog_application_key Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "name": "foo-application" + } + argumentDocs: + id: (String) The ID of this resource. + key: (String, Sensitive) The value of the Application Key. + name: (String) Name for Application Key. + importStatements: + - terraform import datadog_application_key.foo 11111111-2222-3333-4444-555555555555 + datadog_authn_mapping: + subCategory: "" + description: Provides a Datadog AuthN Mappings resource. This feature lets you automatically assign roles to users based on their SAML attributes. + name: datadog_authn_mapping + title: datadog_authn_mapping Resource - terraform-provider-datadog + examples: + - name: dev_ro_role_mapping + manifest: |- + { + "key": "Member-of", + "role": "${data.datadog_role.ro_role.id}", + "value": "Development" + } + references: + role: data.datadog_role.ro_role.id + argumentDocs: + id: (String) The ID of this resource. + key: (String) Identity provider key. + role: (String) The ID of a role to attach to all users with the corresponding key and value. + value: (String) Identity provider value. + importStatements: + - |- + # AuthN mappings can be imported using their ID, e.g. + terraform import datadog_authn_mapping.dev_ro_mapping 000000-0000-0000-0000-000000000000 + datadog_child_organization: + subCategory: "" + description: Provides a Datadog Child Organization resource. This can be used to create Datadog Child Organizations. To manage created organization use datadog_organization_settings. + name: datadog_child_organization + title: datadog_child_organization Resource - terraform-provider-datadog + examples: + - name: organization + manifest: |- + { + "name": "foo-organization" + } + argumentDocs: + access_role: (String) + api_key: (List of Object) Datadog API key. (see below for nested schema) + application_key: (List of Object) An application key with its associated metadata. (see below for nested schema) + description: (String) Description of the organization. + domains: (List of String) + email: (String) + enabled: (Boolean) + hash: (String) + id: (String) The ID of this resource. + key: (String) + name: (String) Name for Child Organization after creation. + owner: (String) + private_widget_share: (Boolean) + public_id: (String) The public_id of the organization you are operating within. + saml: (List of Object) (see below for nested schema) + saml_autocreate_access_role: (String) + saml_autocreate_users_domains: (List of Object) (see below for nested schema) + saml_can_be_enabled: (Boolean) + saml_idp_endpoint: (String) + saml_idp_initiated_login: (List of Object) (see below for nested schema) + saml_idp_metadata_uploaded: (Boolean) + saml_login_url: (String) + saml_strict_mode: (List of Object) (see below for nested schema) + settings: (List of Object) Organization settings (see below for nested schema) + user: (List of Object) Information about a user (see below for nested schema) + importStatements: [] + datadog_cloud_configuration_rule: + subCategory: "" + description: Provides a Datadog Cloud Configuration Rule resource. + name: datadog_cloud_configuration_rule + title: datadog_cloud_configuration_rule Resource - terraform-provider-datadog + examples: + - name: myrule + manifest: |- + { + "enabled": true, + "group_by": [ + "@resource" + ], + "message": "Rule has triggered", + "name": "My cloud configuration rule", + "notifications": [ + "@channel" + ], + "policy": "package datadog\n\nimport data.datadog.output as dd_output\n\nimport future.keywords.contains\nimport future.keywords.if\nimport future.keywords.in\n\neval(resource) = \"skip\" if {\n # Logic that evaluates to true if the resource should be skipped\n true\n} else = \"pass\" {\n # Logic that evaluates to true if the resource is compliant\n true\n} else = \"fail\" {\n # Logic that evaluates to true if the resource is not compliant\n true\n}\n\n# This part remains unchanged for all rules\nresults contains result if {\n some resource in input.resources[input.main_resource_type]\n result := dd_output.format(resource, eval(resource))\n}\n", + "related_resource_types": [], + "resource_type": "aws_s3_bucket", + "severity": "high", + "tags": [ + "some:tag" + ] + } + argumentDocs: + action: (String) The type of filtering action. Valid values are require, suppress. + enabled: (Boolean) Whether the cloud configuration rule is enabled. + filter: (Block List) Additional queries to filter matched events before they are processed. Defaults to empty list (see below for nested schema) + group_by: (List of String) Fields to group by when generating signals, e.g. @resource. Defaults to empty list. + id: (String) The ID of this resource. + message: (String) The message associated to the rule that will be shown in findings and signals. + name: (String) The name of the cloud configuration rule. + notifications: (List of String) Notification targets for signals. Defaults to empty list. + policy: (String) Policy written in Rego format. + query: (String) Query for selecting logs to apply the filtering action. + related_resource_types: (List of String) Related resource types to be checked by the rule. Defaults to empty list. + resource_type: (String) Main resource type to be checked by the rule. + severity: (String) Severity of the rule and associated signals. Valid values are info, low, medium, high, critical. + tags: (List of String) Tags of the rule, propagated to findings and signals. Defaults to empty list. + importStatements: + - |- + # Security monitoring rules can be imported using ID, e.g. + terraform import datadog_cloud_configuration_rule.my_rule m0o-hto-lkb + datadog_cloud_workload_security_agent_rule: + subCategory: "" + description: Provides a Datadog Cloud Workload Security Agent Rule API resource for agent rules. + name: datadog_cloud_workload_security_agent_rule + title: datadog_cloud_workload_security_agent_rule Resource - terraform-provider-datadog + examples: + - name: my_agent_rule + manifest: |- + { + "description": "My agent rule", + "enabled": true, + "expression": "exec.file.name == \"java\"", + "name": "my_agent_rule" + } + argumentDocs: + description: (String) The description of the Agent rule. Defaults to "". + enabled: (Boolean) Whether the Agent rule is enabled. Defaults to true. + expression: (String) The SECL expression of the Agent rule. + id: (String) The ID of this resource. + name: (String) The name of the Agent rule. + importStatements: + - |- + # Cloud Workload Security Agent rules can be imported using ID, e.g. + terraform import datadog_cloud_workload_security_agent_rule.my_agent_rule m0o-hto-lkb + datadog_dashboard: + subCategory: "" + description: Provides a Datadog dashboard resource. This can be used to create and manage Datadog dashboards. + name: datadog_dashboard + title: datadog_dashboard Resource - terraform-provider-datadog + examples: + - name: ordered_dashboard + manifest: |- + { + "description": "Created using the Datadog provider in Terraform", + "is_read_only": true, + "layout_type": "ordered", + "template_variable": [ + { + "default": "aws", + "name": "var_1", + "prefix": "host" + }, + { + "default": "autoscaling", + "name": "var_2", + "prefix": "service_name" + } + ], + "template_variable_preset": [ + { + "name": "preset_1", + "template_variable": [ + { + "name": "var_1", + "value": "host.dc" + }, + { + "name": "var_2", + "value": "my_service" + } + ] + } + ], + "title": "Ordered Layout Dashboard", + "widget": [ + { + "alert_graph_definition": [ + { + "alert_id": "895605", + "live_span": "1h", + "title": "Widget Title", + "viz_type": "timeseries" + } + ] + }, + { + "alert_value_definition": [ + { + "alert_id": "895605", + "precision": 3, + "text_align": "center", + "title": "Widget Title", + "unit": "b" + } + ] + }, + { + "alert_value_definition": [ + { + "alert_id": "895605", + "precision": 3, + "text_align": "center", + "title": "Widget Title", + "unit": "b" + } + ] + }, + { + "change_definition": [ + { + "live_span": "1h", + "request": [ + { + "change_type": "absolute", + "compare_to": "week_before", + "increase_good": true, + "order_by": "name", + "order_dir": "desc", + "q": "avg:system.load.1{env:staging} by {account}", + "show_present": true + } + ], + "title": "Widget Title" + } + ] + }, + { + "distribution_definition": [ + { + "live_span": "1h", + "request": [ + { + "q": "avg:system.load.1{env:staging} by {account}", + "style": [ + { + "palette": "warm" + } + ] + } + ], + "title": "Widget Title" + } + ] + }, + { + "check_status_definition": [ + { + "check": "aws.ecs.agent_connected", + "group_by": [ + "account", + "cluster" + ], + "grouping": "cluster", + "live_span": "1h", + "tags": [ + "account:demo", + "cluster:awseb-ruthebdog-env-8-dn3m6u3gvk" + ], + "title": "Widget Title" + } + ] + }, + { + "heatmap_definition": [ + { + "live_span": "1h", + "request": [ + { + "q": "avg:system.load.1{env:staging} by {account}", + "style": [ + { + "palette": "warm" + } + ] + } + ], + "title": "Widget Title", + "yaxis": [ + { + "include_zero": true, + "max": 2, + "min": 1, + "scale": "sqrt" + } + ] + } + ] + }, + { + "hostmap_definition": [ + { + "group": [ + "host", + "region" + ], + "no_group_hosts": true, + "no_metric_hosts": true, + "node_type": "container", + "request": [ + { + "fill": [ + { + "q": "avg:system.load.1{*} by {host}" + } + ], + "size": [ + { + "q": "avg:memcache.uptime{*} by {host}" + } + ] + } + ], + "scope": [ + "region:us-east-1", + "aws_account:727006795293" + ], + "style": [ + { + "fill_max": "20", + "fill_min": "10", + "palette": "yellow_to_green", + "palette_flip": true + } + ], + "title": "Widget Title" + } + ] + }, + { + "note_definition": [ + { + "background_color": "pink", + "content": "note text", + "font_size": "14", + "show_tick": true, + "text_align": "center", + "tick_edge": "left", + "tick_pos": "50%" + } + ] + }, + { + "query_value_definition": [ + { + "autoscale": true, + "custom_unit": "xx", + "live_span": "1h", + "precision": "4", + "request": [ + { + "aggregator": "sum", + "conditional_formats": [ + { + "comparator": "\u003c", + "palette": "white_on_green", + "value": "2" + }, + { + "comparator": "\u003e", + "palette": "white_on_red", + "value": "2.2" + } + ], + "q": "avg:system.load.1{env:staging} by {account}" + } + ], + "text_align": "right", + "title": "Widget Title" + } + ] + }, + { + "query_table_definition": [ + { + "live_span": "1h", + "request": [ + { + "aggregator": "sum", + "conditional_formats": [ + { + "comparator": "\u003c", + "palette": "white_on_green", + "value": "2" + }, + { + "comparator": "\u003e", + "palette": "white_on_red", + "value": "2.2" + } + ], + "limit": "10", + "q": "avg:system.load.1{env:staging} by {account}" + } + ], + "title": "Widget Title" + } + ] + }, + { + "scatterplot_definition": [ + { + "color_by_groups": [ + "account", + "apm-role-group" + ], + "live_span": "1h", + "request": [ + { + "x": [ + { + "aggregator": "max", + "q": "avg:system.cpu.user{*} by {service, account}" + } + ], + "y": [ + { + "aggregator": "min", + "q": "avg:system.mem.used{*} by {service, account}" + } + ] + } + ], + "title": "Widget Title", + "xaxis": [ + { + "include_zero": true, + "label": "x", + "max": "2000", + "min": "1", + "scale": "pow" + } + ], + "yaxis": [ + { + "include_zero": false, + "label": "y", + "max": "2222", + "min": "5", + "scale": "log" + } + ] + } + ] + }, + { + "servicemap_definition": [ + { + "filters": [ + "env:prod", + "datacenter:dc1" + ], + "service": "master-db", + "title": "env: prod, datacenter:dc1, service: master-db", + "title_align": "left", + "title_size": "16" + } + ] + }, + { + "timeseries_definition": [ + { + "event": [ + { + "q": "sources:test tags:1" + }, + { + "q": "sources:test tags:2" + } + ], + "legend_size": "2", + "live_span": "1h", + "marker": [ + { + "display_type": "error dashed", + "label": " z=6 ", + "value": "y = 4" + }, + { + "display_type": "ok solid", + "label": " x=8 ", + "value": "10 \u003c y \u003c 999" + } + ], + "request": [ + { + "display_type": "line", + "metadata": [ + { + "alias_name": "Alpha", + "expression": "avg:system.cpu.user{app:general} by {env}" + } + ], + "q": "avg:system.cpu.user{app:general} by {env}", + "style": [ + { + "line_type": "dashed", + "line_width": "thin", + "palette": "warm" + } + ] + }, + { + "display_type": "area", + "log_query": [ + { + "compute_query": [ + { + "aggregation": "avg", + "facet": "@duration", + "interval": 5000 + } + ], + "group_by": [ + { + "facet": "host", + "limit": 10, + "sort_query": [ + { + "aggregation": "avg", + "facet": "@duration", + "order": "desc" + } + ] + } + ], + "index": "mcnulty", + "search_query": "status:info" + } + ] + }, + { + "apm_query": [ + { + "compute_query": [ + { + "aggregation": "avg", + "facet": "@duration", + "interval": 5000 + } + ], + "group_by": [ + { + "facet": "resource_name", + "limit": 50, + "sort_query": [ + { + "aggregation": "avg", + "facet": "@string_query.interval", + "order": "desc" + } + ] + } + ], + "index": "apm-search", + "search_query": "type:web" + } + ], + "display_type": "bars" + }, + { + "display_type": "area", + "process_query": [ + { + "filter_by": [ + "active" + ], + "limit": 50, + "metric": "process.stat.cpu.total_pct", + "search_by": "error" + } + ] + } + ], + "show_legend": true, + "title": "Widget Title", + "yaxis": [ + { + "include_zero": false, + "max": 100, + "scale": "log" + } + ] + } + ] + }, + { + "toplist_definition": [ + { + "request": [ + { + "conditional_formats": [ + { + "comparator": "\u003c", + "palette": "white_on_green", + "value": "2" + }, + { + "comparator": "\u003e", + "palette": "white_on_red", + "value": "2.2" + } + ], + "q": "avg:system.cpu.user{app:general} by {env}" + } + ], + "title": "Widget Title" + } + ] + }, + { + "group_definition": [ + { + "layout_type": "ordered", + "title": "Group Widget", + "widget": [ + { + "note_definition": [ + { + "background_color": "pink", + "content": "cluster note widget", + "font_size": "14", + "show_tick": true, + "text_align": "center", + "tick_edge": "left", + "tick_pos": "50%" + } + ] + }, + { + "alert_graph_definition": [ + { + "alert_id": "123", + "live_span": "1h", + "title": "Alert Graph", + "viz_type": "toplist" + } + ] + } + ] + } + ] + }, + { + "service_level_objective_definition": [ + { + "show_error_budget": true, + "slo_id": "56789", + "time_windows": [ + "7d", + "previous_week" + ], + "title": "Widget Title", + "view_mode": "overall", + "view_type": "detail" + } + ] + } + ] + } + - name: free_dashboard + manifest: |- + { + "description": "Created using the Datadog provider in Terraform", + "is_read_only": false, + "layout_type": "free", + "template_variable": [ + { + "default": "aws", + "name": "var_1", + "prefix": "host" + }, + { + "default": "autoscaling", + "name": "var_2", + "prefix": "service_name" + } + ], + "template_variable_preset": [ + { + "name": "preset_1", + "template_variable": [ + { + "name": "var_1", + "value": "host.dc" + }, + { + "name": "var_2", + "value": "my_service" + } + ] + } + ], + "title": "Free Layout Dashboard", + "widget": [ + { + "event_stream_definition": [ + { + "event_size": "l", + "live_span": "1h", + "query": "*", + "title": "Widget Title", + "title_align": "left", + "title_size": 16 + } + ], + "widget_layout": [ + { + "height": 43, + "width": 32, + "x": 0, + "y": 0 + } + ] + }, + { + "event_timeline_definition": [ + { + "live_span": "1h", + "query": "*", + "title": "Widget Title", + "title_align": "left", + "title_size": 16 + } + ], + "widget_layout": [ + { + "height": 9, + "width": 66, + "x": 33, + "y": 60 + } + ] + }, + { + "free_text_definition": [ + { + "color": "#d00", + "font_size": "36", + "text": "free text content", + "text_align": "left" + } + ], + "widget_layout": [ + { + "height": 20, + "width": 34, + "x": 33, + "y": 0 + } + ] + }, + { + "iframe_definition": [ + { + "url": "http://google.com" + } + ], + "widget_layout": [ + { + "height": 46, + "width": 39, + "x": 101, + "y": 0 + } + ] + }, + { + "image_definition": [ + { + "margin": "small", + "sizing": "fit", + "url": "https://images.pexels.com/photos/67636/rose-blue-flower-rose-blooms-67636.jpeg?auto=compress\u0026cs=tinysrgb\u0026h=350" + } + ], + "widget_layout": [ + { + "height": 20, + "width": 30, + "x": 69, + "y": 0 + } + ] + }, + { + "log_stream_definition": [ + { + "columns": [ + "core_host", + "core_service", + "tag_source" + ], + "indexes": [ + "main" + ], + "message_display": "expanded-md", + "query": "error", + "show_date_column": true, + "show_message_column": true, + "sort": [ + { + "column": "time", + "order": "desc" + } + ] + } + ], + "widget_layout": [ + { + "height": 36, + "width": 32, + "x": 0, + "y": 45 + } + ] + }, + { + "manage_status_definition": [ + { + "color_preference": "text", + "display_format": "countsAndList", + "hide_zero_counts": true, + "query": "type:metric", + "show_last_triggered": false, + "sort": "status,asc", + "summary_type": "monitors", + "title": "Widget Title", + "title_align": "left", + "title_size": 16 + } + ], + "widget_layout": [ + { + "height": 40, + "width": 30, + "x": 101, + "y": 48 + } + ] + }, + { + "trace_service_definition": [ + { + "display_format": "three_column", + "env": "datadog.com", + "live_span": "1h", + "service": "alerting-cassandra", + "show_breakdown": true, + "show_distribution": true, + "show_errors": true, + "show_hits": true, + "show_latency": false, + "show_resource_list": false, + "size_format": "large", + "span_name": "cassandra.query", + "title": "alerting-cassandra #env:datadog.com", + "title_align": "center", + "title_size": "13" + } + ], + "widget_layout": [ + { + "height": 38, + "width": 66, + "x": 33, + "y": 21 + } + ] + }, + { + "timeseries_definition": [ + { + "request": [ + { + "formula": [ + { + "alias": "my ff query", + "formula_expression": "my_query_1 + my_query_2" + }, + { + "alias": "my second ff query", + "formula_expression": "my_query_1 * my_query_2", + "limit": [ + { + "count": 5, + "order": "desc" + } + ] + } + ], + "query": [ + { + "metric_query": [ + { + "aggregator": "sum", + "data_source": "metrics", + "name": "my_query_1", + "query": "avg:system.cpu.user{app:general} by {env}" + } + ] + }, + { + "metric_query": [ + { + "aggregator": "sum", + "name": "my_query_2", + "query": "avg:system.cpu.user{app:general} by {env}" + } + ] + } + ] + } + ] + } + ], + "widget_layout": [ + { + "height": 16, + "width": 25, + "x": 58, + "y": 83 + } + ] + }, + { + "timeseries_definition": [ + { + "request": [ + { + "query": [ + { + "event_query": [ + { + "compute": [ + { + "aggregation": "count" + } + ], + "data_source": "logs", + "group_by": [ + { + "facet": "host", + "limit": 10, + "sort": [ + { + "aggregation": "avg", + "metric": "@lambda.max_memory_used" + } + ] + } + ], + "indexes": [ + "days-3" + ], + "name": "my-query" + } + ] + } + ] + }, + { + "display_type": "overlay", + "query": [ + { + "metric_query": [ + { + "data_source": "metrics", + "name": "MyOverlay", + "query": "avg:system.cpu.user{host:COMP-QJWVM2FYT4}" + } + ] + } + ] + } + ] + } + ], + "widget_layout": [ + { + "height": 16, + "width": 28, + "x": 29, + "y": 83 + } + ] + }, + { + "timeseries_definition": [ + { + "request": [ + { + "query": [ + { + "process_query": [ + { + "aggregator": "sum", + "data_source": "process", + "is_normalized_cpu": true, + "limit": 10, + "metric": "process.stat.cpu.total_pct", + "name": "my_process_query", + "sort": "asc", + "tag_filters": [ + "some_filter" + ], + "text_filter": "abc" + } + ] + } + ] + } + ] + } + ], + "widget_layout": [ + { + "height": 16, + "width": 28, + "x": 0, + "y": 83 + } + ] + }, + { + "timeseries_definition": [ + { + "request": [ + { + "formula": [ + { + "alias": "my cloud cost query", + "formula_expression": "query1" + } + ], + "query": [ + { + "cloud_cost_query": [ + { + "aggregator": "sum", + "data_source": "cloud_cost", + "name": "query1", + "query": "sum:aws.cost.amortized{*}" + } + ] + } + ] + } + ] + } + ] + }, + { + "powerpack_definition": [ + { + "background_color": "blue", + "banner_img": "https://example.org/example.png", + "powerpack_id": "00000000-0000-0000-0000-000000000000", + "show_title": true, + "template_variables": [ + { + "controlled_by_powerpack": [ + { + "name": "var_3", + "prefix": "timeframe", + "values": [ + "default", + "values", + "here" + ] + } + ], + "controlled_externally": [ + { + "name": "var_2", + "prefix": "service_name", + "values": [ + "autoscaling" + ] + } + ] + } + ], + "title": "Powerpack Widget" + } + ] + } + ] + } + argumentDocs: + additional_query_filters: (String) Additional filters applied to the SLO query. + aggregation: (String) The aggregation method. + aggregator: (String) The aggregation methods available for cloud cost queries. Valid values are avg, last, max, min, sum, percentile. + alert_graph_definition: '(Block List, Max: 1) The definition for a Alert Graph widget. (see below for nested schema)' + alert_id: (String) The ID of the monitor used by the widget. + alert_value_definition: '(Block List, Max: 1) The definition for a Alert Value widget. (see below for nested schema)' + alias: (String) An expression alias. + alias_name: (String) The expression alias. + apm_dependency_stats_query: '(Block List, Max: 1) The APM Dependency Stats query using formulas and functions. (see below for nested schema)' + apm_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + apm_resource_stats_query: '(Block List, Max: 1) The APM Resource Stats query using formulas and functions. (see below for nested schema)' + apm_stats_query: '(Block List, Max: 1) (see below for nested schema)' + audit_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + autoscale: (Boolean) A Boolean indicating whether to automatically scale the tile. + available_values: (List of String) The list of values that the template variable drop-down is be limited to + background_color: '(String) The background color of the group title, options: vivid_blue, vivid_purple, vivid_pink, vivid_orange, vivid_yellow, vivid_green, blue, purple, pink, orange, yellow, green, gray or white' + banner_img: (String) The image URL to display as a banner for the group. + cell_display_mode: (String) A list of display modes for each table cell. Valid values are number, bar. + change_definition: '(Block List, Max: 1) The definition for a Change widget. (see below for nested schema)' + change_type: (String) Whether to show absolute or relative change. Valid values are absolute, relative. + check: (String) The check to use in the widget. + check_status_definition: '(Block List, Max: 1) The definition for a Check Status widget. (see below for nested schema)' + cloud_cost_query: '(Block List, Max: 1) The Cloud Cost query using formulas and functions. (see below for nested schema)' + color: (String) The color of the text in the widget. + color_by_groups: (List of String) List of groups used for colors. + color_preference: (String) Whether to colorize text or background. Valid values are background, text. + column: (String) The facet path for the column. + columns: (Block List) Column properties used by the front end for display. (see below for nested schema) + comparator: (String) The comparator to use. Valid values are =, >, >=, <, <=. + compare_to: (String) Choose from when to compare current data to. Valid values are hour_before, day_before, week_before, month_before. + compute: '(Block List, Min: 1) The compute options. (see below for nested schema)' + compute_query: '(Block List, Max: 1) compute_query or multi_compute is required. The map keys are listed below. (see below for nested schema)' + conditional_formats: (Block List) Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple conditional_formats blocks are allowed using the structure below. (see below for nested schema) + content: (String) The content of the note. + controlled_by_powerpack: (Block List) Template variables controlled at the powerpack level. (see below for nested schema) + controlled_externally: (Block List) Template variables controlled by the external resource, such as the dashboard this powerpack is on. (see below for nested schema) + count: (Number) The number of results to return. + custom_bg_color: (String) The color palette to apply to the background, same values available as palette. + custom_fg_color: (String) The color palette to apply to the foreground, same values available as palette. + custom_link: (Block List) A nested block describing a custom link. Multiple custom_link blocks are allowed using the structure below. (see below for nested schema) + custom_unit: (String) The unit for the value displayed in the widget. + dashboard_lists: (Set of Number) A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior. + dashboard_lists_removed: (Set of Number) A list of dashboard lists this dashboard should be removed from. Internal only. + data_source: (String) The data source for APM Dependency Stats queries. Valid values are apm_dependency_stats. + default: (String, Deprecated) The default value for the template variable on dashboard load. Cannot be used in conjunction with defaults. Deprecated. Use defaults instead. + defaults: (List of String) One or many default values for template variables on load. If more than one default is specified, they will be unioned together with OR. Cannot be used in conjunction with default. + description: (String) The description of the dashboard. + dimension: (String) Dimension of the Scatterplot. Valid values are x, y, radius, color. + display_format: (String) The display setting to use. Valid values are counts, countsAndList, list. + display_type: '(String) How the marker lines are displayed, options are one of {error, warning, info, ok} combined with one of {dashed, solid, bold}. Example: error dashed.' + distribution_definition: '(Block List, Max: 1) The definition for a Distribution widget. (see below for nested schema)' + env: (String) APM environment. + event: (Block List) The definition of the event to overlay on the graph. Multiple event blocks are allowed using the structure below. (see below for nested schema) + event_query: '(Block List, Max: 1) A timeseries formula and functions events query. (see below for nested schema)' + event_size: (String) The size to use to display an event. Valid values are s, l. + event_stream_definition: '(Block List, Max: 1) The definition for a Event Stream widget. (see below for nested schema)' + event_timeline_definition: '(Block List, Max: 1) The definition for a Event Timeline widget. (see below for nested schema)' + expression: (String) The expression name. + facet: (String) The facet name. + field: (String) Widget column field. + fill: (Block List) The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query or process_query is required within the request block). (see below for nested schema) + fill_max: (String) The max value to use to color the map. + fill_min: (String) The min value to use to color the map. + filter_by: (List of String) A list of processes. + filters: (List of String) Your environment and primary tag (or * if enabled for your account). + focus: (String) The two-letter ISO code of a country to focus the map on (or WORLD). + font_size: (String) The size of the text in the widget. + formula: (Block List) (see below for nested schema) + formula_expression: (String) A string expression built from queries, formulas, and functions. + free_text_definition: '(Block List, Max: 1) The definition for a Free Text widget. (see below for nested schema)' + geomap_definition: '(Block List, Max: 1) The definition for a Geomap widget. (see below for nested schema)' + global_time_target: (String) The global time target of the widget. + group: (String) The check group to use in the widget. + group_by: (Block List) Multiple group_by blocks are allowed using the structure below. (see below for nested schema) + group_definition: '(Block List, Max: 1) The definition for a Group widget. (see below for nested schema)' + group_mode: (String) Group mode to query measures. Valid values are overall, components. Defaults to "overall". + grouping: (String) The kind of grouping to use. Valid values are check, cluster. + has_background: (Boolean) Whether to display a background or not. Defaults to true. + has_border: (Boolean) Whether to display a border or not. Defaults to true. + has_padding: (Boolean) Whether to add padding or not. Defaults to true. + has_search_bar: (String) Controls the display of the search bar. Valid values are always, never, auto. + has_uniform_y_axes: (Boolean) Normalize y axes across graphs. + heatmap_definition: '(Block List, Max: 1) The definition for a Heatmap widget. (see below for nested schema)' + height: (Number) The height of the widget. + hide_percent: (Boolean) Whether to hide the percentages of the groups. + hide_total: (Boolean) Whether or not to show the total value in the widget. + hide_value: (Boolean) Setting this to True hides values. + hide_zero_counts: (Boolean) A Boolean indicating whether to hide empty categories. + horizontal_align: (String) The horizontal alignment for the widget. Valid values are center, left, right. + hostmap_definition: '(Block List, Max: 1) The definition for a Hostmap widget. (see below for nested schema)' + id: (String) The ID of this resource. + iframe_definition: '(Block List, Max: 1) The definition for an Iframe widget. (see below for nested schema)' + image_definition: '(Block List, Max: 1) The definition for an Image widget (see below for nested schema)' + image_url: (String) Displays an image as the background. + include_zero: (Boolean) Always include zero or fit the axis to the data range. + increase_good: (Boolean) A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red). + index: (String) The name of the index to query. + indexes: (List of String) An array of index names to query in the stream. + input: (Block List) Array of workflow inputs to map to dashboard template variables. (see below for nested schema) + interval: (Number) Define the time interval in seconds. + is_column_break: (Boolean) Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to true. + is_hidden: (Boolean) The flag for toggling context menu link visibility. + is_normalized_cpu: (Boolean) Whether to normalize the CPU percentages. + is_read_only: (Boolean, Deprecated) Whether this dashboard is read-only. Deprecated. Prefer using restricted_roles to define which roles are required to edit the dashboard. Defaults to false. + is_upstream: (Boolean) Determines whether stats for upstream or downstream dependencies should be queried. + label: (String) The label for the custom link URL. + layout_type: (String) The layout type of the dashboard. Valid values are ordered, free. + legend_columns: (Set of String) A list of columns to display in the legend. Valid values are value, avg, sum, min, max. + legend_inline: '(Block List, Max: 1) Used to configure the inline legend. Cannot be used in conjunction with legend_table. (see below for nested schema)' + legend_layout: (String) The layout of the legend displayed in the widget. Valid values are auto, horizontal, vertical. + legend_size: (String) The size of the legend displayed in the widget. + legend_table: '(Block List, Max: 1) Used to configure the table legend. Cannot be used in conjunction with legend_inline. (see below for nested schema)' + limit: (Number) The maximum number of items in the group. + line_type: (String) The type of lines displayed. Valid values are dashed, dotted, solid. + line_width: (String) The width of line displayed. Valid values are normal, thick, thin. + link: (String) The URL of the custom link. + list_stream_definition: '(Block List, Max: 1) The definition for a List Stream widget. (see below for nested schema)' + live_span: (String) The timeframe to use when displaying the widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + log_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + log_stream_definition: '(Block List, Max: 1) The definition for an Log Stream widget. (see below for nested schema)' + manage_status_definition: '(Block List, Max: 1) The definition for an Manage Status widget. (see below for nested schema)' + margin: '(String) The margins to use around the image. Note: small and large values are deprecated. Valid values are sm, md, lg, small, large.' + marker: (Block List) A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple marker blocks are allowed within a given tile_def block. (see below for nested schema) + max: (String) Specify the maximum value to show on the Y-axis. + measure: (String) SLO measures queries. Valid values are good_events, bad_events, slo_status, error_budget_remaining, burn_rate, error_budget_burndown. + message_display: (String) The number of log lines to display. Valid values are inline, expanded-md, expanded-lg. + metadata: (Block List) Used to define expression aliases. Multiple metadata blocks are allowed using the structure below. (see below for nested schema) + metric: (String) The metric from the request to correlate with this conditional format. + metric_query: '(Block List, Max: 1) A timeseries formula and functions metrics query. (see below for nested schema)' + min: (String) Specify the minimum value to show on the Y-axis. + multi_compute: (Block List) compute_query or multi_compute is required. Multiple multi_compute blocks are allowed using the structure below. (see below for nested schema) + name: (String) The name of the variable. + network_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + no_group_hosts: (Boolean) A Boolean indicating whether to show ungrouped nodes. + no_metric_hosts: (Boolean) A Boolean indicating whether to show nodes with no metrics. + node_type: (String) The type of node used. Valid values are host, container. + note_definition: '(Block List, Max: 1) The definition for a Note widget. (see below for nested schema)' + notify_list: (Set of String) The list of handles for the users to notify when changes are made to this dashboard. + on_right_yaxis: (Boolean) A Boolean indicating whether the request uses the right or left Y-Axis. + one_graph_per: (String) The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag. + operation_name: (String) Name of operation on service. + order: (String) Widget sorting methods. Valid values are asc, desc. + order_by: (String) What to order by. Valid values are change, name, present, past. + order_dir: (String) Widget sorting method. Valid values are asc, desc. + override_label: (String) The label ID that refers to a context menu link item. When override_label is provided, the client request omits the label field. + palette: (String) The color palette to apply. Valid values are blue, custom_bg, custom_image, custom_text, gray_on_white, grey, green, orange, red, red_on_white, white_on_gray, white_on_green, green_on_white, white_on_red, white_on_yellow, yellow_on_white, black_on_light_yellow, black_on_light_green, black_on_light_red. + palette_flip: (Boolean) A Boolean indicating whether to flip the palette tones. + palette_index: (Number) Index specifying which color to use within the palette. + powerpack_definition: '(Block List, Max: 1) The definition for a Powerpack widget. (see below for nested schema)' + powerpack_id: (String) UUID of the associated powerpack. + precision: (Number) The precision to use when displaying the value. Use * for maximum precision. + prefix: (String) The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown. + primary_tag: (String) The organization's host group name and value. + primary_tag_name: (String) The name of the second primary tag used within APM; required when primary_tag_value is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog. + primary_tag_value: (String) Filter APM data by the second primary tag. primary_tag_name must also be specified. + process_query: '(Block List, Max: 1) The process query to use in the widget. The structure of this block is described below. (see below for nested schema)' + q: (String) The metric query to use for this widget. + query: (Block List) (see below for nested schema) + query_string: (String) Widget query. + query_table_definition: '(Block List, Max: 1) The definition for a Query Table widget. (see below for nested schema)' + query_value_definition: '(Block List, Max: 1) The definition for a Query Value widget. (see below for nested schema)' + reflow_type: (String) The reflow type of a new dashboard layout. Set this only when layout type is ordered. If set to fixed, the dashboard expects all widgets to have a layout, and if it's set to auto, widgets should not have layouts. Valid values are auto, fixed. + request: (Block List) A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query or process_query is required within the request block). (see below for nested schema) + request_type: (String) The request type for the SLO List request. Valid values are slo_list. + resource: (String) The resource name. + resource_name: (String) APM resource. + response_format: (String) Widget response format. Valid values are event_list. + restricted_roles: (Set of String) UUIDs of roles whose associated users are authorized to edit the dashboard. + right_yaxis: '(Block List, Max: 1) A nested block describing the right Y-Axis Controls. See the on_right_yaxis property for which request will use this axis. The structure of this block is described below. (see below for nested schema)' + row_type: (String) The level of detail for the request. Valid values are service, resource, span. + rum_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + run_workflow_definition: '(Block List, Max: 1) The definition for a Run Workflow widget. (see below for nested schema)' + scale: '(String) Specify the scale type, options: linear, log, pow, sqrt.' + scatterplot_definition: '(Block List, Max: 1) The definition for a Scatterplot widget. (see below for nested schema)' + scatterplot_table: (Block List) Scatterplot request containing formulas and functions. (see below for nested schema) + scope: (List of String) The list of tags to filter nodes by. + search: '(Block List, Max: 1) The search options. (see below for nested schema)' + search_by: (String) Your chosen search term. + search_query: (String) The search query to use. + security_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + service: (String) APM service. + service_level_objective_definition: '(Block List, Max: 1) The definition for a Service Level Objective widget. (see below for nested schema)' + servicemap_definition: '(Block List, Max: 1) The definition for a Service Map widget. (see below for nested schema)' + show_breakdown: (Boolean) Whether to show the latency breakdown or not. + show_date_column: (Boolean) If the date column should be displayed. + show_distribution: (Boolean) Whether to show the latency distribution or not. + show_error_budget: (Boolean) Whether to show the error budget or not. + show_errors: (Boolean) Whether to show the error metrics or not. + show_hits: (Boolean) Whether to show the hits metrics or not + show_last_triggered: (Boolean) A Boolean indicating whether to show when monitors/groups last triggered. + show_latency: (Boolean) Whether to show the latency metrics or not. + show_legend: (Boolean) Whether or not to show the legend on this widget. + show_message_column: (Boolean) If the message column should be displayed. + show_present: (Boolean) If set to true, displays the current value. + show_priority: (Boolean) Whether to show the priorities column. + show_resource_list: (Boolean) Whether to show the resource list or not. + show_tick: (Boolean) Whether to show a tick or not. + show_title: (Boolean) Whether to show the title or not. Defaults to true. + size: (Block List) The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query or process_query is required within the request block). (see below for nested schema) + size_format: (String) The size of the widget. Valid values are small, medium, large. + sizing: '(String) The preferred method to adapt the dimensions of the image. The values are based on the image object-fit CSS properties. Note: zoom, fit and center values are deprecated. Valid values are fill, contain, cover, none, scale-down, zoom, fit, center.' + slo_id: (String) ID of an SLO to query. + slo_list_definition: '(Block List, Max: 1) The definition for an SLO (Service Level Objective) List widget. (see below for nested schema)' + slo_query: '(Block List, Max: 1) The SLO query using formulas and functions. (see below for nested schema)' + slo_query_type: (String) type of the SLO to query. Valid values are metric. Defaults to "metric". + sort: '(Block List, Max: 1) The options for sorting group by results. (see below for nested schema)' + sort_query: '(Block List, Max: 1) A list of exactly one element describing the sort query to use. (see below for nested schema)' + source_widget_definition: '(Block List, Min: 1, Max: 1) The original widget we are splitting on. (see below for nested schema)' + span_name: (String) APM span name + split_config: '(Block List, Min: 1, Max: 1) Encapsulates all user choices about how to split a graph. (see below for nested schema)' + split_dimensions: '(Block List, Min: 1, Max: 1) The property by which the graph splits (see below for nested schema)' + split_graph_definition: '(Block List, Max: 1) The definition for a Split Graph widget. (see below for nested schema)' + split_vector: '(Block List, Min: 1) The split graph list contains a graph for each value of the split dimension. (see below for nested schema)' + stat: (String) APM statistic. Valid values are avg_duration, avg_root_duration, avg_spans_per_trace, error_rate, pct_exec_time, pct_of_traces, total_traces_count. + static_splits: '(Block List, Max: 500) The property by which the graph splits (see below for nested schema)' + storage: (String) Storage location (private beta). + style: '(Block List, Max: 1) Styling options for widget formulas. (see below for nested schema)' + summary_type: (String) The summary type to use. Valid values are monitors, groups, combined. + sunburst_definition: '(Block List, Max: 1) The definition for a Sunburst widget. (see below for nested schema)' + tag_filters: (List of String) An array of tags to filter by. + tag_key: (String) + tag_values: (List of String) + tags: (List of String) A list of tags assigned to the Dashboard. Only team names of the form team: are supported. + tags_execution: '(String) The execution method for multi-value filters, options: and or or.' + template_variable: (Block List) The list of template variables for this dashboard. (see below for nested schema) + template_variable_preset: (Block List) The list of selectable template variable presets for this dashboard. (see below for nested schema) + template_variables: '(Block List, Max: 1) The list of template variables for this powerpack. (see below for nested schema)' + text: (String) The text to display in the widget. + text_align: (String) The alignment of the text in the widget. Valid values are center, left, right. + text_filter: (String) The text to use as a filter. + tick_edge: (String) When tick = true, a string indicating on which side of the widget the tick should be displayed. Valid values are bottom, left, right, top. + tick_pos: '(String) When tick = true, a string with a percent sign indicating the position of the tick, for example: tick_pos = "50%" is centered alignment.' + time_windows: (List of String) A list of time windows to display in the widget. Valid values are 7d, 30d, 90d, week_to_date, previous_week, month_to_date, previous_month, global_time. + timeframe: (String) Defines the displayed timeframe. + timeseries_background: '(Block List, Max: 1) Set a timeseries on the widget background. (see below for nested schema)' + timeseries_definition: '(Block List, Max: 1) The definition for a Timeseries widget. (see below for nested schema)' + title: (String) The title of the dashboard. + title_align: (String) The alignment of the widget's title. Valid values are center, left, right. + title_size: (String) The size of the widget's title (defaults to 16). + toplist_definition: '(Block List, Max: 1) The definition for a Toplist widget. (see below for nested schema)' + topology_map_definition: '(Block List, Max: 1) The definition for a Topology Map widget. (see below for nested schema)' + trace_service_definition: '(Block List, Max: 1) The definition for a Trace Service widget. (see below for nested schema)' + treemap_definition: '(Block List, Max: 1) The definition for a Treemap widget. (see below for nested schema)' + type: (String) Whether the Timeseries is made using an area or bars. Valid values are bars, area. + unit: (String) The unit for the value displayed in the widget. + url: (String) The URL of the dashboard. + url_dark_theme: (String) The URL in dark mode to use as a data source for the widget. + value: (String, Deprecated) The value that should be assumed by the template variable in this preset. Cannot be used in conjunction with values. Deprecated. Use values instead. + values: (List of String) One or many template variable values within the saved view, which will be unioned together using OR if more than one is specified. Cannot be used in conjunction with value. + vertical_align: (String) The vertical alignment for the widget. Valid values are center, top, bottom. + view: '(Block List, Min: 1, Max: 1) The view of the world that the map should render. (see below for nested schema)' + view_mode: (String) The view mode for the widget. Valid values are overall, component, both. + view_type: (String) The type of view to use when displaying the widget. Only detail is supported. + viz_type: (String) Type of visualization to use when displaying the widget. Valid values are timeseries, toplist. + widget: (Block List) The list of widgets to display on the dashboard. (see below for nested schema) + widget_layout: '(Block List, Max: 1) The layout of the widget on a ''free'' dashboard. (see below for nested schema)' + width: (String) Widget column width. Valid values are auto, compact, full. + workflow_id: (String) Workflow ID + x: (Block List) The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query, apm_stats_query or process_query is required within the block). (see below for nested schema) + xaxis: '(Block List, Max: 1) A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below. (see below for nested schema)' + "y": (Block List) The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query, apm_stats_query or process_query is required within the block). (see below for nested schema) + yaxis: '(Block List, Max: 1) A nested block describing the Y-Axis Controls. The structure of this block is described below. (see below for nested schema)' + importStatements: + - terraform import datadog_dashboard.my_service_dashboard sv7-gyh-kas + datadog_dashboard_json: + subCategory: "" + description: Provides a Datadog dashboard JSON resource. This can be used to create and manage Datadog dashboards using the JSON definition. + name: datadog_dashboard_json + title: datadog_dashboard_json Resource - terraform-provider-datadog + examples: + - name: dashboard_json + manifest: |- + { + "dashboard": "{\n \"title\":\"Ordered Layout Dashboard\",\n \"description\":\"Created using the Datadog provider in Terraform\",\n \"widgets\":[\n {\n \"id\":719369537777170,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"alert_graph\",\n \"alert_id\":\"895605\",\n \"viz_type\":\"timeseries\"\n }\n },\n {\n \"id\":2306240030393868,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"alert_value\",\n \"alert_id\":\"895605\",\n \"unit\":\"b\",\n \"text_align\":\"center\",\n \"precision\":3\n }\n },\n {\n \"id\":6990998850881326,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"alert_value\",\n \"alert_id\":\"895605\",\n \"unit\":\"b\",\n \"text_align\":\"center\",\n \"precision\":3\n }\n },\n {\n \"id\":3351284044659007,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"change\",\n \"requests\":[\n {\n \"q\":\"avg:system.load.1{env:staging} by {account}\",\n \"compare_to\":\"week_before\",\n \"change_type\":\"absolute\",\n \"order_dir\":\"desc\",\n \"increase_good\":true,\n \"order_by\":\"name\",\n \"show_present\":true\n }\n ]\n }\n },\n {\n \"id\":6450290622996182,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"show_legend\":false,\n \"type\":\"distribution\",\n \"requests\":[\n {\n \"q\":\"avg:system.load.1{env:staging} by {account}\",\n \"style\":{\n \"palette\":\"warm\"\n }\n }\n ]\n }\n },\n {\n \"id\":4902842646291536,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"check_status\",\n \"check\":\"aws.ecs.agent_connected\",\n \"grouping\":\"cluster\",\n \"group_by\":[\n \"account\",\n \"cluster\"\n ],\n \"tags\":[\n \"account:demo\",\n \"cluster:awseb-ruthebdog-env-8-dn3m6u3gvk\"\n ]\n }\n },\n {\n \"id\":6392349954822644,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"show_legend\":false,\n \"type\":\"heatmap\",\n \"yaxis\":{\n \"scale\":\"sqrt\",\n \"include_zero\":true,\n \"min\":\"1\",\n \"max\":\"2\"\n },\n \"requests\":[\n {\n \"q\":\"avg:system.load.1{env:staging} by {account}\",\n \"style\":{\n \"palette\":\"warm\"\n }\n }\n ]\n }\n },\n {\n \"id\":5222961478940988,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"hostmap\",\n \"requests\":{\n \"fill\":{\n \"q\":\"avg:system.load.1{*} by {host}\"\n },\n \"size\":{\n \"q\":\"avg:memcache.uptime{*} by {host}\"\n }\n },\n \"node_type\":\"container\",\n \"no_metric_hosts\":true,\n \"no_group_hosts\":true,\n \"group\":[\n \"host\",\n \"region\"\n ],\n \"scope\":[\n \"region:us-east-1\",\n \"aws_account:727006795293\"\n ],\n \"style\":{\n \"palette\":\"yellow_to_green\",\n \"palette_flip\":true,\n \"fill_min\":\"10\",\n \"fill_max\":\"20\"\n }\n }\n },\n {\n \"id\":8121199734227072,\n \"definition\":{\n \"type\":\"note\",\n \"content\":\"note text\",\n \"background_color\":\"pink\",\n \"font_size\":\"14\",\n \"text_align\":\"center\",\n \"show_tick\":true,\n \"tick_pos\":\"50%\",\n \"tick_edge\":\"left\"\n }\n },\n {\n \"id\":1775856835833038,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"query_value\",\n \"requests\":[\n {\n \"q\":\"avg:system.load.1{env:staging} by {account}\",\n \"aggregator\":\"sum\",\n \"conditional_formats\":[\n {\n \"hide_value\":false,\n \"comparator\":\"\u003c\",\n \"palette\":\"white_on_green\",\n \"value\":2\n },\n {\n \"hide_value\":false,\n \"comparator\":\"\u003e\",\n \"palette\":\"white_on_red\",\n \"value\":2.2\n }\n ]\n }\n ],\n \"autoscale\":true,\n \"custom_unit\":\"xx\",\n \"text_align\":\"right\",\n \"precision\":4\n }\n },\n {\n \"id\":8461455966625581,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"query_table\",\n \"requests\":[\n {\n \"q\":\"avg:system.load.1{env:staging} by {account}\",\n \"aggregator\":\"sum\",\n \"conditional_formats\":[\n {\n \"hide_value\":false,\n \"comparator\":\"\u003c\",\n \"palette\":\"white_on_green\",\n \"value\":2\n },\n {\n \"hide_value\":false,\n \"comparator\":\"\u003e\",\n \"palette\":\"white_on_red\",\n \"value\":2.2\n }\n ],\n \"limit\":10\n }\n ]\n }\n },\n {\n \"id\":8660006349418736,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"scatterplot\",\n \"requests\":{\n \"x\":{\n \"q\":\"avg:system.cpu.user{*} by {service, account}\",\n \"aggregator\":\"max\"\n },\n \"y\":{\n \"q\":\"avg:system.mem.used{*} by {service, account}\",\n \"aggregator\":\"min\"\n }\n },\n \"xaxis\":{\n \"scale\":\"pow\",\n \"label\":\"x\",\n \"include_zero\":true,\n \"min\":\"1\",\n \"max\":\"2000\"\n },\n \"yaxis\":{\n \"scale\":\"log\",\n \"label\":\"y\",\n \"include_zero\":false,\n \"min\":\"5\",\n \"max\":\"2222\"\n },\n \"color_by_groups\":[\n \"account\",\n \"apm-role-group\"\n ]\n }\n },\n {\n \"id\":1669590772917638,\n \"definition\":{\n \"title\":\"env: prod, datacenter:dc1, service: master-db\",\n \"title_size\":\"16\",\n \"title_align\":\"left\",\n \"type\":\"servicemap\",\n \"service\":\"master-db\",\n \"filters\":[\n \"env:prod\",\n \"datacenter:dc1\"\n ]\n }\n },\n {\n \"id\":2138829058361817,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"show_legend\":true,\n \"legend_size\":\"2\",\n \"type\":\"timeseries\",\n \"requests\":[\n {\n \"q\":\"avg:system.cpu.user{app:general} by {env}\",\n \"on_right_yaxis\":false,\n \"metadata\":[\n {\n \"expression\":\"avg:system.cpu.user{app:general} by {env}\",\n \"alias_name\":\"Alpha\"\n }\n ],\n \"style\":{\n \"palette\":\"warm\",\n \"line_type\":\"dashed\",\n \"line_width\":\"thin\"\n },\n \"display_type\":\"line\"\n },\n {\n \"on_right_yaxis\":false,\n \"log_query\":{\n \"index\":\"mcnulty\",\n \"search\":{\n \"query\":\"status:info\"\n },\n \"group_by\":[\n {\n \"facet\":\"host\",\n \"sort\":{\n \"facet\":\"@duration\",\n \"aggregation\":\"avg\",\n \"order\":\"desc\"\n },\n \"limit\":10\n }\n ],\n \"compute\":{\n \"facet\":\"@duration\",\n \"interval\":5000,\n \"aggregation\":\"avg\"\n }\n },\n \"display_type\":\"area\"\n },\n {\n \"on_right_yaxis\":false,\n \"apm_query\":{\n \"index\":\"apm-search\",\n \"search\":{\n \"query\":\"type:web\"\n },\n \"group_by\":[\n {\n \"facet\":\"resource_name\",\n \"sort\":{\n \"facet\":\"@string_query.interval\",\n \"aggregation\":\"avg\",\n \"order\":\"desc\"\n },\n \"limit\":50\n }\n ],\n \"compute\":{\n \"facet\":\"@duration\",\n \"interval\":5000,\n \"aggregation\":\"avg\"\n }\n },\n \"display_type\":\"bars\"\n },\n {\n \"on_right_yaxis\":false,\n \"process_query\":{\n \"search_by\":\"error\",\n \"metric\":\"process.stat.cpu.total_pct\",\n \"limit\":50,\n \"filter_by\":[\n \"active\"\n ]\n },\n \"display_type\":\"area\"\n }\n ],\n \"yaxis\":{\n \"scale\":\"log\",\n \"include_zero\":false,\n \"max\":\"100\"\n },\n \"events\":[\n {\n \"q\":\"sources:test tags:1\"\n },\n {\n \"q\":\"sources:test tags:2\"\n }\n ],\n \"markers\":[\n {\n \"label\":\" z=6 \",\n \"value\":\"y = 4\",\n \"display_type\":\"error dashed\"\n },\n {\n \"label\":\" x=8 \",\n \"value\":\"10 \u003c y \u003c 999\",\n \"display_type\":\"ok solid\"\n }\n ]\n }\n },\n {\n \"id\":7307171374656551,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"toplist\",\n \"requests\":[\n {\n \"q\":\"avg:system.cpu.user{app:general} by {env}\",\n \"conditional_formats\":[\n {\n \"hide_value\":false,\n \"comparator\":\"\u003c\",\n \"palette\":\"white_on_green\",\n \"value\":2\n },\n {\n \"hide_value\":false,\n \"comparator\":\"\u003e\",\n \"palette\":\"white_on_red\",\n \"value\":2.2\n }\n ]\n }\n ]\n }\n },\n {\n \"id\":7086674838553258,\n \"definition\":{\n \"title\":\"Group Widget\",\n \"type\":\"group\",\n \"layout_type\":\"ordered\",\n \"widgets\":[\n {\n \"id\":3726092277657502,\n \"definition\":{\n \"type\":\"note\",\n \"content\":\"cluster note widget\",\n \"background_color\":\"pink\",\n \"font_size\":\"14\",\n \"text_align\":\"center\",\n \"show_tick\":true,\n \"tick_pos\":\"50%\",\n \"tick_edge\":\"left\"\n }\n },\n {\n \"id\":6376384650558057,\n \"definition\":{\n \"title\":\"Alert Graph\",\n \"type\":\"alert_graph\",\n \"alert_id\":\"123\",\n \"viz_type\":\"toplist\"\n }\n }\n ]\n }\n },\n {\n \"id\":4668903563678912,\n \"definition\":{\n \"title\":\"Widget Title\",\n \"type\":\"slo\",\n \"view_type\":\"detail\",\n \"time_windows\":[\n \"7d\",\n \"previous_week\"\n ],\n \"slo_id\":\"56789\",\n \"show_error_budget\":true,\n \"view_mode\":\"overall\",\n \"global_time_target\":\"0\"\n }\n }\n ],\n \"template_variables\":[\n {\n \"name\":\"var_1\",\n \"default\":\"aws\",\n \"prefix\":\"host\"\n },\n {\n \"name\":\"var_2\",\n \"default\":\"autoscaling\",\n \"prefix\":\"service_name\"\n }\n ],\n \"layout_type\":\"ordered\",\n \"is_read_only\":true,\n \"notify_list\":[\n\n ],\n \"template_variable_presets\":[\n {\n \"name\":\"preset_1\",\n \"template_variables\":[\n {\n \"name\":\"var_1\",\n \"value\":\"host.dc\"\n },\n {\n \"name\":\"var_2\",\n \"value\":\"my_service\"\n }\n ]\n }\n ]\n}\n" + } + argumentDocs: + dashboard: (String) The JSON formatted definition of the Dashboard. + dashboard_lists: (Set of Number) A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior. + dashboard_lists_removed: (Set of Number) The list of dashboard lists this dashboard should be removed from. Internal only. + id: (String) The ID of this resource. + url: (String) The URL of the dashboard. + importStatements: + - terraform import datadog_dashboard_json.my_service_dashboard sv7-gyh-kas + datadog_dashboard_list: + subCategory: "" + description: Provides a Datadog dashboard_list resource. This can be used to create and manage Datadog Dashboard Lists and the individual dashboards within them. + name: datadog_dashboard_list + title: datadog_dashboard_list Resource - terraform-provider-datadog + examples: + - name: new_list + manifest: |- + { + "dash_item": [ + { + "dash_id": "${datadog_dashboard.time.id}", + "type": "custom_timeboard" + }, + { + "dash_id": "${datadog_dashboard.screen.id}", + "type": "custom_screenboard" + } + ], + "name": "Terraform Created List" + } + references: + dash_item.dash_id: datadog_dashboard.screen.id + dependencies: + datadog_dashboard.screen: |- + { + "description": "Created using the Datadog provider in Terraform", + "is_read_only": false, + "layout_type": "free", + "title": "TF Test Free Layout Dashboard", + "widget": [ + { + "event_stream_definition": [ + { + "event_size": "l", + "live_span": "1h", + "query": "*", + "title": "Widget Title", + "title_align": "left", + "title_size": 16 + } + ], + "widget_layout": [ + { + "height": 43, + "width": 32, + "x": 5, + "y": 5 + } + ] + } + ] + } + datadog_dashboard.time: |- + { + "description": "Created using the Datadog provider in Terraform", + "is_read_only": true, + "layout_type": "ordered", + "title": "TF Test Layout Dashboard", + "widget": [ + { + "alert_graph_definition": [ + { + "alert_id": "1234", + "live_span": "1h", + "title": "Widget Title", + "viz_type": "timeseries" + } + ] + } + ] + } + argumentDocs: + dash_id: (String) The ID of the dashboard to add + dash_item: (Block Set) A set of dashboard items that belong to this list (see below for nested schema) + id: (String) The ID of this resource. + name: (String) The name of the Dashboard List + type: (String) The type of this dashboard. Valid values are custom_timeboard, custom_screenboard, integration_screenboard, integration_timeboard, host_timeboard. + importStatements: + - terraform import datadog_dashboard_list.new_list 123456 + datadog_downtime: + subCategory: "" + description: This resource is deprecated — use the datadog_downtime_schedule resource instead. Provides a Datadog downtime resource. This can be used to create and manage Datadog downtimes. + name: datadog_downtime + title: datadog_downtime Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "end": 1483365600, + "monitor_id": 12345, + "recurrence": [ + { + "period": 1, + "type": "days" + } + ], + "scope": [ + "*" + ], + "start": 1483308000 + } + - name: foo + manifest: |- + { + "end": 1483365600, + "recurrence": [ + { + "period": 1, + "type": "days" + } + ], + "scope": [ + "*" + ], + "start": 1483308000 + } + argumentDocs: + active: (Boolean) When true indicates this downtime is being actively applied + active_child_id: (Number) The id corresponding to the downtime object definition of the active child for the original parent recurring downtime. This field will only exist on recurring downtimes. + disabled: (Boolean) When true indicates this downtime is not being applied + end: (Number) Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC. + end_date: (String) String representing date and time to end the downtime in RFC3339 format. + id: (String) The ID of this resource. + message: (String) An optional message to provide when creating the downtime, can include notification handles + monitor_id: (Number) When specified, this downtime will only apply to this monitor + monitor_tags: (Set of String) A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced + mute_first_recovery_notification: (Boolean) When true the first recovery notification during the downtime will be muted Defaults to false. + period: (Number) How often to repeat as an integer. For example to repeat every 3 days, select a type of days and a period of 3. + recurrence: '(Block List, Max: 1) Optional recurring schedule for this downtime (see below for nested schema)' + rrule: (String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use FREQ=MONTHLY;INTERVAL=1. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). Only applicable when type is rrule. + scope: (List of String) specify the group scope to which this downtime applies. For everything use '*' + start: (Number) Specify when this downtime should start. Accepts a Unix timestamp in UTC. + start_date: (String) String representing date and time to start the downtime in RFC3339 format. + timezone: (String) The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to "UTC". + type: (String) One of days, weeks, months, years, or rrule. + until_date: (Number) The date at which the recurrence should end as a POSIX timestamp. until_occurrences and until_date are mutually exclusive. + until_occurrences: (Number) How many times the downtime will be rescheduled. until_occurrences and until_date are mutually exclusive. + week_days: '(List of String) A list of week days to repeat on. Choose from: Mon, Tue, Wed, Thu, Fri, Sat or Sun. Only applicable when type is weeks. First letter must be capitalized.' + importStatements: + - terraform import datadog_downtime.bytes_received_localhost 2081 + datadog_downtime_schedule: + subCategory: "" + description: Provides a Datadog DowntimeSchedule resource. This can be used to create and manage Datadog downtimes. + name: datadog_downtime_schedule + title: datadog_downtime_schedule Resource - terraform-provider-datadog + examples: + - name: downtime_schedule_example + manifest: |- + { + "display_timezone": "America/New_York", + "message": "Message about the downtime", + "monitor_identifier": [ + { + "monitor_tags": [ + "test:123", + "data:test" + ] + } + ], + "mute_first_recovery_notification": true, + "notify_end_states": [ + "alert", + "warn" + ], + "notify_end_types": [ + "canceled", + "expired" + ], + "recurring_schedule": [ + { + "recurrence": [ + { + "duration": "1h", + "rrule": "FREQ=DAILY;INTERVAL=1", + "start": "2050-01-02T03:04:05" + } + ], + "timezone": "America/New_York" + } + ], + "scope": "env:us9-prod7 AND team:test123" + } + argumentDocs: + display_timezone: (String) The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling. + duration: (String) The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'. + end: (String) ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends. + id: (String) The ID of this resource. + message: (String) A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same @username notation as events. + monitor_id: (Number) ID of the monitor to prevent notifications. + monitor_identifier: (Block, Optional) (see below for nested schema) + monitor_tags: (Set of String) A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match all provided monitor tags. Setting monitor_tags to [*] configures the downtime to mute all monitors for the given scope. + mute_first_recovery_notification: (Boolean) If the first recovery notification during a downtime should be muted. + notify_end_states: (Set of String) States that will trigger a monitor notification when the notify_end_types action occurs. + notify_end_types: (Set of String) Actions that will trigger a monitor notification if the downtime is in the notify_end_types state. + one_time_schedule: (Block, Optional) (see below for nested schema) + recurrence: (Block List) (see below for nested schema) + recurring_schedule: (Block, Optional) (see below for nested schema) + rrule: '(String) The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to rrule and set the FREQ to MONTHLY and BYMONTHDAY to 1. Most common rrule options from the iCalendar Spec are supported. Note: Attributes specifying the duration in RRULE are not supported (for example, DTSTART, DTEND, DURATION). More examples available in this downtime guide.' + scope: (String) The scope to which the downtime applies. Must follow the common search syntax. + start: (String) ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created. + timezone: (String) The timezone in which to schedule the downtime. + importStatements: + - terraform import datadog_downtime_schedule.new_list "00e000000-0000-1234-0000-000000000000" + datadog_integration_aws: + subCategory: "" + description: Provides a Datadog - Amazon Web Services integration resource. This can be used to create and manage Datadog - Amazon Web Services integration. + name: datadog_integration_aws + title: datadog_integration_aws Resource - terraform-provider-datadog + examples: + - name: sandbox + manifest: |- + { + "account_id": "1234567890", + "account_specific_namespace_rules": { + "auto_scaling": false, + "opsworks": false + }, + "excluded_regions": [ + "us-east-1", + "us-west-2" + ], + "filter_tags": [ + "key:value" + ], + "host_tags": [ + "key:value", + "key2:value2" + ], + "role_name": "DatadogAWSIntegrationRole" + } + argumentDocs: + access_key_id: (String) Your AWS access key ID. Only required if your AWS account is a GovCloud or China account. + account_id: (String) Your AWS Account ID without dashes. + account_specific_namespace_rules: (Map of Boolean) Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the available namespace rules API endpoint. + cspm_resource_collection_enabled: (String) Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection. + excluded_regions: (Set of String) An array of AWS regions to exclude from metrics collection. + external_id: (String) AWS External ID. NOTE This provider will not be able to detect changes made to the external_id field from outside Terraform. + filter_tags: (List of String) Array of EC2 tags (in the form key:value) defines a filter that Datadog uses when collecting metrics from EC2. Wildcards, such as ? (for single characters) and * (for multiple characters) can also be used. Only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. Host matching a given tag can also be excluded by adding ! before the tag. e.x. env:production,instance-type:c1.*,!region:us-east-1. + host_tags: (List of String) Array of tags (in the form key:value) to add to all hosts and metrics reporting through this integration. + id: (String) The ID of this resource. + metrics_collection_enabled: (String) Whether Datadog collects metrics for this AWS account. + resource_collection_enabled: (String) Whether Datadog collects a standard set of resources from your AWS account. + role_name: (String) Your Datadog role delegation name. + secret_access_key: (String, Sensitive) Your AWS secret access key. Only required if your AWS account is a GovCloud or China account. + importStatements: + - |- + # Amazon Web Services integrations can be imported using their account ID and role name separated with a colon (:), while the external_id should be passed by setting an environment variable called EXTERNAL_ID + EXTERNAL_ID=${external_id} terraform import datadog_integration_aws.test ${account_id}:${role_name} + datadog_integration_aws_event_bridge: + subCategory: "" + description: Provides a Datadog - Amazon Web Services integration EventBridge resource. This can be used to create and manage Event Sources for each Datadog integrated AWS account. + name: datadog_integration_aws_event_bridge + title: datadog_integration_aws_event_bridge Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "account_id": "123456789012", + "create_event_bus": true, + "event_generator_name": "app-alerts", + "region": "us-east-1" + } + argumentDocs: + account_id: (String) Your AWS Account ID without dashes. + create_event_bus: (Boolean) True if Datadog should create the event bus in addition to the event source. Requires the events:CreateEventBus permission. Defaults to true. + event_generator_name: (String) The given part of the event source name, which is then combined with an assigned suffix to form the full name. + id: (String) The ID of this resource. + region: (String) The event source's AWS region. + importStatements: + - |- + # Amazon Web Service EventBridge integrations are imported using the Event Source name as listed for an integrated AWS account in Datadog + terraform import datadog_integration_aws_event_bridge.foo event-source-name-abc12345 + datadog_integration_aws_lambda_arn: + subCategory: "" + description: Provides a Datadog - Amazon Web Services integration Lambda ARN resource. This can be used to create and manage the log collection Lambdas for an account. Update operations are currently not supported with datadog API so any change forces a new resource. + name: datadog_integration_aws_lambda_arn + title: datadog_integration_aws_lambda_arn Resource - terraform-provider-datadog + examples: + - name: main_collector + manifest: |- + { + "account_id": "1234567890", + "lambda_arn": "arn:aws:lambda:us-east-1:1234567890:function:datadog-forwarder-Forwarder" + } + argumentDocs: + account_id: (String) Your AWS Account ID without dashes. + id: (String) The ID of this resource. + lambda_arn: (String) The ARN of the Datadog forwarder Lambda. + importStatements: + - |- + # Amazon Web Services Lambda ARN integrations can be imported using their account_id and lambda_arn separated with a space (` `). + terraform import datadog_integration_aws_lambda_arn.test "1234567890 arn:aws:lambda:us-east-1:1234567890:function:datadog-forwarder-Forwarder" + datadog_integration_aws_log_collection: + subCategory: "" + description: Provides a Datadog - Amazon Web Services integration log collection resource. This can be used to manage which AWS services logs are collected from for an account. + name: datadog_integration_aws_log_collection + title: datadog_integration_aws_log_collection Resource - terraform-provider-datadog + examples: + - name: main + manifest: |- + { + "account_id": "1234567890", + "services": [ + "lambda" + ] + } + argumentDocs: + account_id: (String) Your AWS Account ID without dashes. + id: (String) The ID of this resource. + services: (List of String) A list of services to collect logs from. See the api docs for more details on which services are supported. + importStatements: + - |- + # Amazon Web Services log collection integrations can be imported using the `account ID`. + terraform import datadog_integration_aws_log_collection.test 1234567890 + datadog_integration_aws_tag_filter: + subCategory: "" + description: Provides a Datadog AWS tag filter resource. This can be used to create and manage Datadog AWS tag filters. + name: datadog_integration_aws_tag_filter + title: datadog_integration_aws_tag_filter Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "account_id": "123456789010", + "namespace": "sqs", + "tag_filter_str": "key:value" + } + argumentDocs: + account_id: (String) Your AWS Account ID without dashes. + id: (String) The ID of this resource. + namespace: (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda. + tag_filter_str: (String) The tag filter string. + importStatements: + - |- + # Amazon Web Services log filter resource can be imported using their account ID and namespace separated with a colon (:). + terraform import datadog_integration_aws_tag_filter.foo ${account_id}:${namespace} + datadog_integration_azure: + subCategory: "" + description: Provides a Datadog - Microsoft Azure integration resource. This can be used to create and manage the integrations. + name: datadog_integration_azure + title: datadog_integration_azure Resource - terraform-provider-datadog + examples: + - name: sandbox + manifest: |- + { + "app_service_plan_filters": "examplefilter:true,example:another", + "automute": true, + "client_id": "\u003cazure_client_id\u003e", + "client_secret": "\u003cazure_client_secret_key\u003e", + "container_app_filters": "examplefilter:true,example:one_more", + "cspm_enabled": true, + "custom_metrics_enabled": false, + "host_filters": "examplefilter:true,example:true", + "tenant_name": "\u003cazure_tenant_name\u003e" + } + argumentDocs: + app_service_plan_filters: (String) This comma-separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to "". + automute: (Boolean) Silence monitors for expected Azure VM shutdowns. Defaults to false. + client_id: (String) Your Azure web application ID. + client_secret: (String, Sensitive) (Required for Initial Creation) Your Azure web application secret key. + container_app_filters: (String) This comma-separated list of tags (in the form key:value,key:value) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to "". + cspm_enabled: |- + (Boolean) When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration. + Note: This requires resource_collection_enabled to be set to true. Defaults to false. + custom_metrics_enabled: (Boolean) Enable custom metrics for your organization. Defaults to false. + host_filters: (String) String of host tag(s) (in the form key:value,key:value) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. env:production,deploymentgroup:red Defaults to "". + id: (String) The ID of this resource. + resource_collection_enabled: (Boolean) When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration. + tenant_name: (String) Your Azure Active Directory ID. + importStatements: + - |- + # Microsoft Azure integrations can be imported using their `tenant name` and `client` id separated with a colon (`:`). + terraform import datadog_integration_azure.sandbox ${tenant_name}:${client_id} + datadog_integration_cloudflare_account: + subCategory: "" + description: Provides a Datadog IntegrationCloudflareAccount resource. This can be used to create and manage Datadog integrationcloudflareaccount. + name: datadog_integration_cloudflare_account + title: datadog_integration_cloudflare_account Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "api_key": "12345678910abc", + "email": "test-email@example.com", + "name": "test-name" + } + argumentDocs: + api_key: (String, Sensitive) The API key (or token) for the Cloudflare account. + email: (String) The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. + id: (String) The ID of this resource. + name: (String) The name of the Cloudflare account. + importStatements: + - terraform import datadog_integration_cloudflare_account.new_list "" + datadog_integration_confluent_account: + subCategory: "" + description: Provides a Datadog IntegrationConfluentAccount resource. This can be used to create and manage Datadog integrationconfluentaccount. + name: datadog_integration_confluent_account + title: datadog_integration_confluent_account Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "api_key": "TESTAPIKEY123", + "api_secret": "test-api-secret-123", + "tags": [ + "mytag", + "mytag2:myvalue" + ] + } + argumentDocs: + api_key: (String) The API key associated with your Confluent account. + api_secret: (String, Sensitive) The API secret associated with your Confluent account. + id: (String) The ID of this resource. + tags: (Set of String) A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + importStatements: + - |- + # Confluent account ID can be retrieved using the ListConfluentAccounts endpoint + # https://docs.datadoghq.com/api/latest/confluent-cloud/#list-confluent-accounts + + terraform import datadog_integration_confluent_account.new_list "" + datadog_integration_confluent_resource: + subCategory: "" + description: Provides a Datadog IntegrationConfluentResource resource. This can be used to create and manage Datadog integrationconfluentresource. + name: datadog_integration_confluent_resource + title: datadog_integration_confluent_resource Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "account_id": "${datadog_integration_confluent_account.foo.id}", + "resource_id": "123456", + "resource_type": "kafka", + "tags": [ + "mytag", + "mytag2:myvalue" + ] + } + references: + account_id: datadog_integration_confluent_account.foo.id + dependencies: + datadog_integration_confluent_account.foo: |- + { + "api_key": "TESTAPIKEY123", + "api_secret": "test-api-secret-123", + "tags": [ + "mytag", + "mytag2:myvalue" + ] + } + argumentDocs: + account_id: (String) Confluent Account ID. + enable_custom_metrics: (Boolean) Enable the custom.consumer_lag_offset metric, which contains extra metric tags. Defaults to false. + id: (String) The ID of this resource. + resource_id: (String) The ID associated with a Confluent resource. + resource_type: (String) The resource type of the Resource. Can be kafka, connector, ksql, or schema_registry. + tags: (Set of String) A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon. + importStatements: + - terraform import datadog_integration_confluent_resource.new_list "confluent_account_id:confluent_resource_id" + datadog_integration_fastly_account: + subCategory: "" + description: Provides a Datadog IntegrationFastlyAccount resource. This can be used to create and manage Datadog integrationfastlyaccount. + name: datadog_integration_fastly_account + title: datadog_integration_fastly_account Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "api_key": "ABCDEFG123", + "name": "test-name" + } + argumentDocs: + api_key: (String) The API key for the Fastly account. + id: (String) The ID of this resource. + name: (String) The name of the Fastly account. + importStatements: + - terraform import datadog_integration_fastly_account.new_list "a8f5f167f44f4964e6c998dee827110c" + datadog_integration_fastly_service: + subCategory: "" + description: Provides a Datadog IntegrationFastlyService resource. This can be used to create and manage Datadog integrationfastlyservice. + name: datadog_integration_fastly_service + title: datadog_integration_fastly_service Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "account_id": "${datadog_integration_fastly_account.foo.id}", + "service_id": "my-service-id", + "tags": [ + "mytag", + "mytag2:myvalue" + ] + } + references: + account_id: datadog_integration_fastly_account.foo.id + dependencies: + datadog_integration_fastly_account.foo: |- + { + "api_key": "ABCDEFG123", + "name": "test-name" + } + argumentDocs: + account_id: (String) Fastly Account id. + id: (String) The ID of this resource. + service_id: (String) The ID of the Fastly service. + tags: (Set of String) A list of tags for the Fastly service. + importStatements: + - terraform import datadog_integration_fastly_service.new_list "service-id" + datadog_integration_gcp: + subCategory: "" + description: This resource is deprecated — use the datadog_integration_gcp_sts resource instead. Provides a Datadog - Google Cloud Platform integration resource. This can be used to create and manage Datadog - Google Cloud Platform integration. + name: datadog_integration_gcp + title: datadog_integration_gcp Resource - terraform-provider-datadog + examples: + - name: awesome_gcp_project_integration + manifest: |- + { + "client_email": "awesome-service-account@awesome-project-id.iam.gserviceaccount.com", + "client_id": "123456789012345678901", + "host_filters": "foo:bar,buzz:lightyear", + "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", + "private_key_id": "1234567890123456789012345678901234567890", + "project_id": "awesome-project-id" + } + dependencies: + google_service_account.datadog: |- + { + "account_id": "datadog-integration", + "display_name": "Datadog Integration" + } + google_service_account_key.datadog: |- + { + "service_account_id": "${google_service_account.datadog.name}" + } + - name: awesome_gcp_project_integration + manifest: |- + { + "client_email": "${jsondecode(base64decode(google_service_account_key.datadog.private_key))[\"client_email\"]}", + "client_id": "${jsondecode(base64decode(google_service_account_key.datadog.private_key))[\"client_id\"]}", + "private_key": "${jsondecode(base64decode(google_service_account_key.datadog.private_key))[\"private_key\"]}", + "private_key_id": "${jsondecode(base64decode(google_service_account_key.datadog.private_key))[\"private_key_id\"]}", + "project_id": "${jsondecode(base64decode(google_service_account_key.datadog.private_key))[\"project_id\"]}" + } + dependencies: + google_service_account.datadog: |- + { + "account_id": "datadog-integration", + "display_name": "Datadog Integration" + } + google_service_account_key.datadog: |- + { + "service_account_id": "${google_service_account.datadog.name}" + } + argumentDocs: + automute: (Boolean) Silence monitors for expected GCE instance shutdowns. Defaults to false. + client_email: (String) Your email found in your JSON service account key. + client_id: (String) Your ID found in your JSON service account key. + cspm_resource_collection_enabled: (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to false. + host_filters: (String) Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. + id: (String) The ID of this resource. + private_key: (String, Sensitive) Your private key name found in your JSON service account key. + private_key_id: (String) Your private key ID found in your JSON service account key. + project_id: (String) Your Google Cloud project ID found in your JSON service account key. + importStatements: + - |- + # Google Cloud Platform integrations can be imported using their project ID, e.g. + terraform import datadog_integration_gcp.awesome_gcp_project_integration project_id + datadog_integration_gcp_sts: + subCategory: "" + description: Provides a Datadog Integration GCP Sts resource. This can be used to create and manage Datadog - Google Cloud Platform integration. + name: datadog_integration_gcp_sts + title: datadog_integration_gcp_sts Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "automute": true, + "client_email": "${google_service_account.datadog_integration.email}", + "host_filters": [ + "filter_one", + "filter_two" + ], + "is_cspm_enabled": false + } + references: + client_email: google_service_account.datadog_integration.email + dependencies: + google_service_account.datadog_integration: |- + { + "account_id": "datadogintegration", + "display_name": "Datadog Integration", + "project": "gcp-project" + } + google_service_account_iam_member.sa_iam: |- + { + "member": "${format(\"serviceAccount:%s\", datadog_integration_gcp_sts.foo.delegate_account_email)}", + "role": "roles/iam.serviceAccountTokenCreator", + "service_account_id": "${google_service_account.datadog_integration.name}" + } + argumentDocs: + automute: (Boolean) Silence monitors for expected GCE instance shutdowns. + client_email: (String) Your service account email address. + delegate_account_email: (String) Datadog's STS Delegate Email. + host_filters: (Set of String) Your Host Filters. + id: (String) The ID of this resource. + is_cspm_enabled: (Boolean) When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges. + importStatements: + - terraform import datadog_integration_gcp_sts.foo "9c303af3-b963-45e0-8c8f-469b9e1a213f" + datadog_integration_opsgenie_service_object: + subCategory: "" + description: Resource for interacting with Datadog Opsgenie Service API. + name: datadog_integration_opsgenie_service_object + title: datadog_integration_opsgenie_service_object Resource - terraform-provider-datadog + examples: + - name: fake_service_name + manifest: |- + { + "name": "fake_service_name", + "opsgenie_api_key": "00000000-0000-0000-0000-000000000000", + "region": "us" + } + - name: fake_service_name_2 + manifest: |- + { + "name": "fake_service_name_2", + "opsgenie_api_key": "11111111-1111-1111-1111-111111111111", + "region": "eu" + } + argumentDocs: + custom_url: (String) The custom url for a custom region. + id: (String) The ID of this resource. + name: (String) The name for the Opsgenie service. + opsgenie_api_key: '(String, Sensitive) The Opsgenie API key for the Opsgenie service. Note: Since the Datadog API never returns Opsgenie API keys, it is impossible to detect drifts. The best way to solve a drift is to manually mark the Service Object resource with terraform taint to have it destroyed and recreated.' + region: (String) The region for the Opsgenie service. Valid values are us, eu, custom. + importStatements: [] + datadog_integration_pagerduty: + subCategory: "" + description: Provides a Datadog - PagerDuty resource. This can be used to create and manage Datadog - PagerDuty integration. See also PagerDuty Integration Guide https://www.pagerduty.com/docs/guides/datadog-integration-guide/. + name: datadog_integration_pagerduty + title: datadog_integration_pagerduty Resource - terraform-provider-datadog + examples: + - name: pd + manifest: |- + { + "api_token": "38457822378273432587234242874", + "schedules": [ + "https://ddog.pagerduty.com/schedules/X123VF", + "https://ddog.pagerduty.com/schedules/X321XX" + ], + "subdomain": "ddog" + } + dependencies: + datadog_integration_pagerduty_service_object.testing_bar: |- + { + "depends_on": [ + "datadog_integration_pagerduty.pd" + ], + "service_key": "54321098765432109876", + "service_name": "testing_bar" + } + datadog_integration_pagerduty_service_object.testing_foo: |- + { + "depends_on": [ + "datadog_integration_pagerduty.pd" + ], + "service_key": "9876543210123456789", + "service_name": "testing_foo" + } + argumentDocs: + api_token: (String, Sensitive) Your PagerDuty API token. + id: (String) The ID of this resource. + schedules: (List of String) Array of your schedule URLs. + subdomain: (String) Your PagerDuty account’s personalized subdomain name. + importStatements: [] + datadog_integration_pagerduty_service_object: + subCategory: "" + description: Provides access to individual Service Objects of Datadog - PagerDuty integrations. Note that the Datadog - PagerDuty integration must be activated in the Datadog UI in order for this resource to be usable. + name: datadog_integration_pagerduty_service_object + title: datadog_integration_pagerduty_service_object Resource - terraform-provider-datadog + examples: + - name: testing_foo + manifest: |- + { + "service_key": "9876543210123456789", + "service_name": "testing_foo" + } + - name: testing_bar + manifest: |- + { + "service_key": "54321098765432109876", + "service_name": "testing_bar" + } + argumentDocs: + id: (String) The ID of this resource. + service_key: '(String, Sensitive) Your Service name associated service key in PagerDuty. This key may also be referred to as an Integration Key or Routing Key in the Pagerduty Integration documentation, UI, and within the Pagerduty Provider for Terraform Note: Since the Datadog API never returns service keys, it is impossible to detect drifts. The best way to solve a drift is to manually mark the Service Object resource with terraform taint to have it destroyed and recreated.' + service_name: (String) Your Service name in PagerDuty. + importStatements: + - |- + # Pagerduty service object can be imported using the service_name, while the service_key should be passed by setting the environment variable SERVICE_KEY + SERVICE_KEY=${service_key} terraform import datadog_integration_pagerduty_service_object.foo ${service_name} + datadog_integration_slack_channel: + subCategory: "" + description: Resource for interacting with the Datadog Slack channel API + name: datadog_integration_slack_channel + title: datadog_integration_slack_channel Resource - terraform-provider-datadog + examples: + - name: test_channel + manifest: |- + { + "account_name": "foo", + "channel_name": "#test_channel", + "display": [ + { + "message": true, + "notified": false, + "snapshot": false, + "tags": true + } + ] + } + argumentDocs: + account_name: (String) Slack account name. + channel_name: (String) Slack channel name. + display: '(Block List, Min: 1, Max: 1) Configuration options for what is shown in an alert event message. (see below for nested schema)' + id: (String) The ID of this resource. + message: (Boolean) Show the main body of the alert event. Defaults to true. + notified: (Boolean) Show the list of @-handles in the alert event. Defaults to true. + snapshot: (Boolean) Show the alert event's snapshot image. Defaults to true. + tags: (Boolean) Show the scopes on which the monitor alerted. Defaults to true. + importStatements: + - |- + # Slack channel integrations can be imported using their account_name and channel_name separated with a colon (`:`). + terraform import datadog_integration_slack_channel.test_channel "foo:#test_channel" + datadog_ip_allowlist Resource - terraform-provider-datadog: + subCategory: "" + description: Provides the Datadog IP allowlist resource. This can be used to manage the Datadog IP allowlist + name: datadog_ip_allowlist Resource - terraform-provider-datadog + title: datadog_ip_allowlist Resource - terraform-provider-datadog + argumentDocs: + cidr_block: (String) IP address or range of addresses. + enabled: (Boolean) Whether the IP Allowlist is enabled. + entry: (Block Set) Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note. (see below for nested schema) + id: (String) The ID of this resource. + note: (String) Note accompanying IP address. + importStatements: [] + datadog_logs_archive: + subCategory: "" + description: Provides a Datadog Logs Archive API resource, which is used to create and manage Datadog logs archives. + name: datadog_logs_archive + title: datadog_logs_archive Resource - terraform-provider-datadog + examples: + - name: my_s3_archive + manifest: |- + { + "name": "my s3 archive", + "query": "service:myservice", + "s3_archive": [ + { + "account_id": "001234567888", + "bucket": "my-bucket", + "path": "/path/foo", + "role_name": "my-role-name" + } + ] + } + argumentDocs: + account_id: (String) Your AWS account id. + azure_archive: '(Block List, Max: 1) Definition of an azure archive. (see below for nested schema)' + bucket: (String) Name of your GCS bucket. + client_email: (String) Your client email. + client_id: (String) Your client id. + container: (String) The container where the archive is stored. + gcs_archive: '(Block List, Max: 1) Definition of a GCS archive. (see below for nested schema)' + id: (String) The ID of this resource. + include_tags: (Boolean) To store the tags in the archive, set the value true. If it is set to false, the tags will be dropped when the logs are sent to the archive. Defaults to false. + name: (String) Your archive name. + path: (String) The path where the archive is stored. + project_id: (String) Your project id. + query: (String) The archive query/filter. Logs matching this query are included in the archive. + rehydration_max_scan_size_in_gb: (Number) To limit the rehydration scan size for the archive, set a value in GB. + rehydration_tags: (List of String) An array of tags to add to rehydrated logs from an archive. + role_name: (String) Your AWS role name + s3_archive: '(Block List, Max: 1) Definition of an s3 archive. (see below for nested schema)' + storage_account: (String) The associated storage account. + tenant_id: (String) Your tenant id. + importStatements: + - terraform import datadog_logs_archive.my_s3_archive 1Aabc2_dfQPLnXy3HlfK4hi + datadog_logs_archive_order: + subCategory: "" + description: Provides a Datadog Logs Archive API https://docs.datadoghq.com/api/v2/logs-archives/ resource, which is used to manage Datadog log archives order. + name: datadog_logs_archive_order + title: datadog_logs_archive_order Resource - terraform-provider-datadog + examples: + - name: sample_archive_order + manifest: |- + { + "archive_ids": [ + "${datadog_logs_archive.sample_archive_1.id}", + "${datadog_logs_archive.sample_archive_2.id}" + ] + } + argumentDocs: + archive_ids: (List of String) The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If archive_ids is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order. + id: (String) The ID of this resource. + importStatements: + - |- + # There must be at most one datadog_logs_archive_order resource. You can import the datadog_logs_archive_order or create an archive order. + terraform import archiveOrderID + datadog_logs_custom_pipeline: + subCategory: "" + description: 'Provides a Datadog Logs Pipeline API https://docs.datadoghq.com/api/v1/logs-pipelines/ resource, which is used to create and manage Datadog logs custom pipelines. Each datadog_logs_custom_pipeline resource defines a complete pipeline. The order of the pipelines is maintained in a different resource: datadog_logs_pipeline_order. When creating a new pipeline, you need to explicitly add this pipeline to the datadog_logs_pipeline_order resource to track the pipeline. Similarly, when a pipeline needs to be destroyed, remove its references from the datadog_logs_pipeline_order resource.' + name: datadog_logs_custom_pipeline + title: datadog_logs_custom_pipeline Resource - terraform-provider-datadog + examples: + - name: sample_pipeline + manifest: |- + { + "filter": [ + { + "query": "source:foo" + } + ], + "is_enabled": true, + "name": "sample pipeline", + "processor": [ + { + "arithmetic_processor": [ + { + "expression": "(time1 - time2)*1000", + "is_enabled": true, + "is_replace_missing": true, + "name": "sample arithmetic processor", + "target": "my_arithmetic" + } + ] + }, + { + "attribute_remapper": [ + { + "is_enabled": true, + "name": "sample attribute processor", + "override_on_conflict": false, + "preserve_source": true, + "source_type": "tag", + "sources": [ + "db.instance" + ], + "target": "db", + "target_format": "string", + "target_type": "attribute" + } + ] + }, + { + "category_processor": [ + { + "category": [ + { + "filter": [ + { + "query": "@severity: \".\"" + } + ], + "name": "debug" + }, + { + "filter": [ + { + "query": "@severity: \"-\"" + } + ], + "name": "verbose" + } + ], + "is_enabled": true, + "name": "sample category processor", + "target": "foo.severity" + } + ] + }, + { + "date_remapper": [ + { + "is_enabled": true, + "name": "sample date remapper", + "sources": [ + "_timestamp", + "published_date" + ] + } + ] + }, + { + "geo_ip_parser": [ + { + "is_enabled": true, + "name": "sample geo ip parser", + "sources": [ + "network.client.ip" + ], + "target": "network.client.geoip" + } + ] + }, + { + "grok_parser": [ + { + "grok": [ + { + "match_rules": "Rule %{word:my_word2} %{number:my_float2}", + "support_rules": "" + } + ], + "is_enabled": true, + "name": "sample grok parser", + "samples": [ + "sample log 1" + ], + "source": "message" + } + ] + }, + { + "lookup_processor": [ + { + "default_lookup": "unknown service", + "is_enabled": true, + "lookup_table": [ + "1,my service" + ], + "name": "sample lookup processor", + "source": "service_id", + "target": "service_name" + } + ] + }, + { + "message_remapper": [ + { + "is_enabled": true, + "name": "sample message remapper", + "sources": [ + "msg" + ] + } + ] + }, + { + "pipeline": [ + { + "filter": [ + { + "query": "source:foo" + } + ], + "is_enabled": true, + "name": "nested pipeline", + "processor": [ + { + "url_parser": [ + { + "name": "sample url parser", + "normalize_ending_slashes": true, + "sources": [ + "url", + "extra" + ], + "target": "http_url" + } + ] + } + ] + } + ] + }, + { + "service_remapper": [ + { + "is_enabled": true, + "name": "sample service remapper", + "sources": [ + "service" + ] + } + ] + }, + { + "status_remapper": [ + { + "is_enabled": true, + "name": "sample status remapper", + "sources": [ + "info", + "trace" + ] + } + ] + }, + { + "string_builder_processor": [ + { + "is_enabled": true, + "is_replace_missing": false, + "name": "sample string builder processor", + "target": "user_activity", + "template": "%{user.name} logged in at %{timestamp}" + } + ] + }, + { + "trace_id_remapper": [ + { + "is_enabled": true, + "name": "sample trace id remapper", + "sources": [ + "dd.trace_id" + ] + } + ] + }, + { + "user_agent_parser": [ + { + "is_enabled": true, + "is_encoded": false, + "name": "sample user agent parser", + "sources": [ + "user", + "agent" + ], + "target": "http_agent" + } + ] + } + ] + } + argumentDocs: + arithmetic_processor: '(Block List, Max: 1) Arithmetic Processor. More information can be found in the official docs (see below for nested schema)' + attribute_remapper: '(Block List, Max: 1) Attribute Remapper Processor. More information can be found in the official docs (see below for nested schema)' + category: '(Block List, Min: 1) List of filters to match or exclude a log with their corresponding name to assign a custom value to the log. (see below for nested schema)' + category_processor: '(Block List, Max: 1) Category Processor. More information can be found in the official docs (see below for nested schema)' + date_remapper: '(Block List, Max: 1) Date Remapper Processor. More information can be found in the official docs (see below for nested schema)' + default_lookup: (String) Default lookup value to use if there is no entry in the lookup table for the value of the source attribute. + expression: (String) Arithmetic operation between one or more log attributes. + filter: '(Block List, Min: 1) (see below for nested schema)' + geo_ip_parser: '(Block List, Max: 1) Date GeoIP Processor. More information can be found in the official docs (see below for nested schema)' + grok: '(Block List, Min: 1, Max: 1) (see below for nested schema)' + grok_parser: '(Block List, Max: 1) Grok Processor. More information can be found in the official docs (see below for nested schema)' + id: (String) The ID of this resource. + is_enabled: (Boolean) + is_encoded: (Boolean) If the source attribute is URL encoded or not. + is_replace_missing: (Boolean) If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing. + lookup_enrichment_table: (String) Name of the Reference Table for the source attribute and their associated target attribute values. + lookup_processor: '(Block List, Max: 1) Lookup Processor. More information can be found in the official docs (see below for nested schema)' + lookup_table: (List of String) List of entries of the lookup table using key,value format. + match_rules: (String) Match rules for your grok parser. + message_remapper: '(Block List, Max: 1) Message Remapper Processor. More information can be found in the official docs (see below for nested schema)' + name: (String) + normalize_ending_slashes: (Boolean) Normalize the ending slashes or not. + override_on_conflict: (Boolean) Override the target element if already set. + pipeline: '(Block List, Max: 1) (see below for nested schema)' + preserve_source: (Boolean) Remove or preserve the remapped source element. + processor: (Block List) (see below for nested schema) + query: (String) Filter criteria of the category. + reference_table_lookup_processor: '(Block List, Max: 1) Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the official docs (see below for nested schema)' + samples: (List of String) List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters. + service_remapper: '(Block List, Max: 1) Service Remapper Processor. More information can be found in the official docs (see below for nested schema)' + source: (String) Name of the log attribute to parse. + source_type: (String) Defines where the sources are from (log attribute or tag). + sources: (List of String) List of source attributes or tags. + status_remapper: '(Block List, Max: 1) Status Remapper Processor. More information can be found in the official docs (see below for nested schema)' + string_builder_processor: '(Block List, Max: 1) String Builder Processor. More information can be found in the official docs (see below for nested schema)' + support_rules: (String) Support rules for your grok parser. + target: (String) Name of the attribute that contains the result of the arithmetic operation. + target_format: (String) If the target_type of the remapper is attribute, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. string, integer, or double are the possible types. If the target_type is tag, this parameter may not be specified. + target_type: (String) Defines if the target is a log attribute or tag. + template: (String) The formula with one or more attributes and raw text. + trace_id_remapper: '(Block List, Max: 1) Trace ID Remapper Processor. More information can be found in the official docs (see below for nested schema)' + url_parser: '(Block List, Max: 1) URL Parser Processor. More information can be found in the official docs (see below for nested schema)' + user_agent_parser: '(Block List, Max: 1) User-Agent Parser Processor. More information can be found in the official docs (see below for nested schema)' + importStatements: + - |- + # To find the pipeline ID, click the "edit" button in the UI to open the pipeline details. + # The pipeline ID is the last part of the URL. + terraform import + datadog_logs_index: + subCategory: "" + description: 'Provides a Datadog Logs Index API resource. This can be used to create and manage Datadog logs indexes.Note: It is not possible to delete logs indexes through Terraform, so an index remains in your account after the resource is removed from your terraform config. Reach out to support to delete a logs index.' + name: datadog_logs_index + title: datadog_logs_index Resource - terraform-provider-datadog + examples: + - name: sample_index + manifest: |- + { + "daily_limit": 200000, + "daily_limit_reset": [ + { + "reset_time": "14:00", + "reset_utc_offset": "+02:00" + } + ], + "daily_limit_warning_threshold_percentage": 50, + "exclusion_filter": [ + { + "filter": [ + { + "query": "app:coredns", + "sample_rate": 0.97 + } + ], + "is_enabled": true, + "name": "Filter coredns logs" + }, + { + "filter": [ + { + "query": "service:kube_apiserver", + "sample_rate": 1 + } + ], + "is_enabled": true, + "name": "Kubernetes apiserver" + } + ], + "filter": [ + { + "query": "*" + } + ], + "name": "your index", + "retention_days": 7 + } + argumentDocs: + daily_limit: (Number) The number of log events you can send in this index per day before you are rate-limited. + daily_limit_reset: '(Block List, Max: 1) Object containing options to override the default daily limit reset time. (see below for nested schema)' + daily_limit_warning_threshold_percentage: (Number) A percentage threshold of the daily quota at which a Datadog warning event is generated. + disable_daily_limit: (Boolean) If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained. + exclusion_filter: (Block List) List of exclusion filters. (see below for nested schema) + filter: '(Block List, Min: 1, Max: 1) Logs filter (see below for nested schema)' + id: (String) The ID of this resource. + is_enabled: (Boolean) A boolean stating if the exclusion is active or not. + name: (String) The name of the index. + query: (String) Logs filter criteria. Only logs matching this filter criteria are considered for this index. + reset_time: (String) String in HH:00 format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive). + reset_utc_offset: (String) String in (-|+)HH:00 format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive). + retention_days: (Number) The number of days before logs are deleted from this index. + sample_rate: (Number) The fraction of logs excluded by the exclusion filter, when active. + importStatements: + - terraform import + datadog_logs_index_order: + subCategory: "" + description: Provides a Datadog Logs Index API resource. This can be used to manage the order of Datadog logs indexes. + name: datadog_logs_index_order + title: datadog_logs_index_order Resource - terraform-provider-datadog + examples: + - name: sample_index_order + manifest: |- + { + "indexes": [ + "${datadog_logs_index.sample_index.id}" + ], + "name": "sample_index_order" + } + argumentDocs: + id: (String) The ID of this resource. + indexes: (List of String) The index resource list. Logs are tested against the query filter of each index one by one following the order of the list. + name: (String) The unique name of the index order resource. + importStatements: + - |- + # The Datadog Terraform Provider does not support the creation and deletion of index orders. There must be at most one `datadog_logs_index_order` resource + # `` can be whatever you specify in your code. Datadog does not store the name on the server. + terraform import + datadog_logs_integration_pipeline: + subCategory: "" + description: Provides a Datadog Logs Pipeline API resource to manage the integrations. Integration pipelines are the pipelines that are automatically installed for your organization when sending the logs with specific sources. You don't need to maintain or update these types of pipelines. Keeping them as resources, however, allows you to manage the order of your pipelines by referencing them in your datadog_logs_pipeline_order resource. If you don't need the pipeline_order feature, this resource declaration can be omitted. + name: datadog_logs_integration_pipeline + title: datadog_logs_integration_pipeline Resource - terraform-provider-datadog + examples: + - name: python + manifest: |- + { + "is_enabled": true + } + argumentDocs: + id: (String) The ID of this resource. + is_enabled: (Boolean) Boolean value to enable your pipeline. + importStatements: + - |- + # To find the pipeline ID, click the "view" button in the UI to open the pipeline details. + # The pipeline ID is the last part of the URL. + terraform import + datadog_logs_metric: + subCategory: "" + description: Resource for interacting with the logs_metric API + name: datadog_logs_metric + title: datadog_logs_metric Resource - terraform-provider-datadog + examples: + - name: testing_logs_metric + manifest: |- + { + "compute": [ + { + "aggregation_type": "distribution", + "path": "@duration" + } + ], + "filter": [ + { + "query": "service:test" + } + ], + "group_by": [ + { + "path": "@status", + "tag_name": "status" + }, + { + "path": "@version", + "tag_name": "version" + } + ], + "name": "testing.logs.metric" + } + argumentDocs: + aggregation_type: (String) The type of aggregation to use. This field can't be updated after creation. Valid values are count, distribution. + compute: '(Block List, Min: 1, Max: 1) The compute rule to compute the log-based metric. This field can''t be updated after creation. (see below for nested schema)' + filter: '(Block List, Min: 1, Max: 1) The log-based metric filter. Logs matching this filter will be aggregated in this metric. (see below for nested schema)' + group_by: (Block Set) The rules for the group by. (see below for nested schema) + id: (String) The ID of this resource. + include_percentiles: (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an aggregation_type of distribution. + name: (String) The name of the log-based metric. This field can't be updated after creation. + path: (String) The path to the value the log-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + query: (String) The search query - following the log search syntax. + tag_name: (String) Name of the tag that gets created. + importStatements: + - terraform import datadog_logs_metric.testing_logs_metric testing.logs.metric + datadog_logs_pipeline_order: + subCategory: "" + description: Provides a Datadog Logs Pipeline API resource, which is used to manage Datadog log pipelines order. + name: datadog_logs_pipeline_order + title: datadog_logs_pipeline_order Resource - terraform-provider-datadog + examples: + - name: sample_pipeline_order + manifest: |- + { + "name": "sample_pipeline_order", + "pipelines": [ + "${datadog_logs_custom_pipeline.sample_pipeline.id}", + "${datadog_logs_integration_pipeline.python.id}" + ] + } + argumentDocs: + id: (String) The ID of this resource. + name: (String) The name attribute in the resource datadog_logs_pipeline_order needs to be unique. It's recommended to use the same value as the resource name. No related field is available in Logs Pipeline API. + pipelines: (List of String) The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs. + importStatements: + - |- + # There must be at most one datadog_logs_pipeline_order resource. Pipeline order creation is not supported from logs config API. You can import the datadog_logs_pipeline_order or create a pipeline order (which is actually doing the update operation). + terraform import + datadog_metric_metadata: + subCategory: "" + description: Provides a Datadog metric_metadata resource. This can be used to manage a metric's metadata. + name: datadog_metric_metadata + title: datadog_metric_metadata Resource - terraform-provider-datadog + examples: + - name: request_time + manifest: |- + { + "description": "99th percentile request time in milliseconds", + "metric": "request.time", + "short_name": "Request time", + "type": "gauge", + "unit": "millisecond" + } + argumentDocs: + description: (String) A description of the metric. + id: (String) The ID of this resource. + metric: (String) The name of the metric. + per_unit: (String) Per unit of the metric such as second in bytes per second. + short_name: (String) A short name of the metric. + statsd_interval: (Number) If applicable, statsd flush interval in seconds for the metric. + type: (String) Metric type such as count, gauge, or rate. Updating a metric of type distribution is not supported. If you would like to see the distribution type returned, contact Datadog support. + unit: (String) Primary unit of the metric such as byte or operation. + importStatements: + - terraform import datadog_metric_metadata.request_time request.time + datadog_metric_tag_configuration: + subCategory: "" + description: Provides a Datadog metric tag configuration resource. This can be used to modify tag configurations for metrics. + name: datadog_metric_tag_configuration + title: datadog_metric_tag_configuration Resource - terraform-provider-datadog + examples: + - name: example_dist_metric + manifest: |- + { + "include_percentiles": false, + "metric_name": "example.terraform.dist.metric", + "metric_type": "distribution", + "tags": [ + "sport", + "datacenter" + ] + } + - name: example_count_metric + manifest: |- + { + "aggregations": [ + { + "space": "min", + "time": "avg" + }, + { + "space": "max", + "time": "avg" + } + ], + "exclude_tags_mode": false, + "metric_name": "example.terraform.count.metric", + "metric_type": "count", + "tags": [ + "sport", + "datacenter" + ] + } + argumentDocs: + aggregations: '(Block Set) A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a metric_type of count, rate, or gauge. (see below for nested schema)' + exclude_tags_mode: (Boolean) Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to false. + id: (String) The ID of this resource. + include_percentiles: (Boolean) Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a metric_type of distribution. + metric_name: (String) The metric name for this resource. + metric_type: (String) The metric's type. This field can't be updated after creation. Valid values are gauge, count, rate, distribution. + space: (String) A space aggregation for use in query. Valid values are avg, max, min, sum. + tags: (Set of String) A list of tag keys that will be queryable for your metric. + time: (String) A time aggregation for use in query. Valid values are avg, count, max, min, sum. + importStatements: + - terraform import datadog_metric_tag_configuration.example_dist_metric example.terraform.dist.metric + datadog_monitor: + subCategory: "" + description: Provides a Datadog monitor resource. This can be used to create and manage Datadog monitors. + name: datadog_monitor + title: datadog_monitor Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "escalation_message": "Escalation message @pagerduty", + "include_tags": true, + "message": "Monitor triggered. Notify: @hipchat-channel", + "monitor_thresholds": [ + { + "critical": 4, + "warning": 2 + } + ], + "name": "Name for monitor foo", + "query": "avg(last_1h):avg:aws.ec2.cpu{environment:foo,host:foo} by {host} \u003e 4", + "tags": [ + "foo:bar", + "team:fooBar" + ], + "type": "metric alert" + } + argumentDocs: + aggregation: (String) The aggregation methods for event platform queries. Valid values are count, cardinality, median, pc75, pc90, pc95, pc98, pc99, sum, min, max, avg. + compute: '(Block List, Min: 1) The compute options. (see below for nested schema)' + critical: (String) The monitor CRITICAL threshold. Must be a number. + critical_recovery: (String) The monitor CRITICAL recovery threshold. Must be a number. + custom_schedule: (Block List) Configuration options for the custom schedules. If start is omitted, the monitor creation time will be used. (see below for nested schema) + data_source: (String) The data source for event platform-based queries. Valid values are rum, ci_pipelines, ci_tests, audit, events, logs, spans, database_queries. + day_starts: (String) The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in HH:mm format. + enable_logs_sample: (Boolean) A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to false. + enable_samples: (Boolean) Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors. + escalation_message: (String) A message to include with a re-notification. Supports the @username notification allowed elsewhere. + evaluation_delay: (Number) (Only applies to metric alert) Time (in seconds) to delay evaluation, as a non-negative integer. + evaluation_window: (Block List) Configuration options for the evaluation window. If hour_starts is set, no other fields may be set. Otherwise, day_starts and month_starts must be set together. (see below for nested schema) + event_query: (Block List) A timeseries formula and functions events query. (see below for nested schema) + facet: (String) The event facet. + force_delete: (Boolean) A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor). + group_by: (Block List) Group by options. (see below for nested schema) + group_retention_duration: '(String) The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.' + groupby_simple_monitor: (Boolean) Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to false. + hour_starts: (Number) The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59. + id: (String) The ID of this resource. + include_tags: (Boolean) A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to true. + indexes: (List of String) An array of index names to query in the stream. + interval: (Number) A time interval in milliseconds. + limit: (Number) The number of groups to return. + locked: (Boolean, Deprecated) A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to false. Deprecated. Use restricted_roles. + message: (String) A message to include with notifications for this monitor. + metric: (String) The measurable attribute to compute. + monitor_threshold_windows: '(Block List, Max: 1) A mapping containing recovery_window and trigger_window values, e.g. last_15m . Can only be used for, and are required for, anomaly monitors. (see below for nested schema)' + monitor_thresholds: '(Block List, Max: 1) Alert thresholds of the monitor. (see below for nested schema)' + month_starts: (Number) The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1. + name: (String) Name of Datadog monitor. + new_group_delay: (Number) The time (in seconds) to skip evaluations for new groups. + new_host_delay: (Number, Deprecated) Deprecated. See new_group_delay. Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of monitor results. Should be a non-negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set new_host_delay to zero for monitors grouped by host. Deprecated. Use new_group_delay except when setting new_host_delay to zero. Defaults to 300. + no_data_timeframe: (Number) The number of minutes before a monitor will notify when data stops reporting. + notification_preset_name: (String) Toggles the display of additional content sent in the monitor notification. Valid values are show_all, hide_query, hide_handles, hide_all. + notify_audit: (Boolean) A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to false. + notify_by: (Set of String) Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by cluster, namespace, and pod can be configured to only notify on each new cluster violating the alert conditions by setting notify_by to ['cluster']. Tags mentioned in notify_by must be a subset of the grouping tags in the query. For example, a query grouped by cluster and namespace cannot notify on region. Setting notify_by to [*] configures the monitor to notify as a simple-alert. + notify_no_data: (Boolean) A boolean indicating whether this monitor will notify when data stops reporting. Defaults to false. + ok: (String) The monitor OK threshold. Only supported in monitor type service check. Must be a number. + on_missing_data: '(String) Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: show_no_data, show_and_notify_no_data, resolve, and default.' + order: (String) Direction of sort. Valid values are asc, desc. + priority: (Number) Integer from 1 (high) to 5 (low) indicating alert severity. + query: (String) The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the API Reference for details. terraform plan will validate query contents unless validate is set to false. + recovery_window: (String) Describes how long an anomalous metric must be normal before the alert recovers. + recurrence: '(Block List, Min: 1, Max: 1) A list of recurrence definitions. Length must be 1. (see below for nested schema)' + renotify_interval: (Number) The number of minutes after the last notification before a monitor will re-notify on the current status. It will only re-notify if it's not resolved. + renotify_occurrences: (Number) The number of re-notification messages that should be sent on the current status. + renotify_statuses: (Set of String) The types of statuses for which re-notification messages should be sent. Valid values are alert, warn, no data. + require_full_window: (Boolean) A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to false for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, require_full_window must be false and will be ignored. Defaults to true. + restricted_roles: (Set of String) A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the Roles API in the data.id field. + rrule: (String) Must be a valid rrule. See API docs for supported fields + scheduling_options: (Block List) Configuration options for scheduling. (see below for nested schema) + search: '(Block List, Min: 1, Max: 1) The search options. (see below for nested schema)' + sort: '(Block List, Max: 1) The options for sorting group by results. (see below for nested schema)' + start: (String) Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss' + tags: '(Set of String) A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it''s not currently possible to filter by these tags when querying via the API' + timeout_h: (Number) The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours. + timezone: '(String) ''tz database'' format. Example: America/New_York or UTC' + trigger_window: (String) Describes how long a metric must be anomalous before an alert triggers. + type: '(String) The type of the monitor. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Note: The monitor type cannot be changed after a monitor is created. Valid values are composite, event alert, log alert, metric alert, process alert, query alert, rum alert, service check, synthetics alert, trace-analytics alert, slo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert.' + unknown: (String) The monitor UNKNOWN threshold. Only supported in monitor type service check. Must be a number. + validate: (Boolean) If set to false, skip the validation call done during plan. + variables: '(Block List, Max: 1) (see below for nested schema)' + warning: (String) The monitor WARNING threshold. Must be a number. + warning_recovery: (String) The monitor WARNING recovery threshold. Must be a number. + importStatements: + - terraform import datadog_monitor.bytes_received_localhost 2081 + datadog_monitor_config_policy: + subCategory: "" + description: Provides a Datadog monitor config policy resource. This can be used to create and manage Datadog monitor config policies. + name: datadog_monitor_config_policy + title: datadog_monitor_config_policy Resource - terraform-provider-datadog + examples: + - name: test + manifest: |- + { + "policy_type": "tag", + "tag_policy": [ + { + "tag_key": "env", + "tag_key_required": false, + "valid_tag_values": [ + "staging", + "prod" + ] + } + ] + } + argumentDocs: + id: (String) The ID of this resource. + policy_type: (String) The monitor config policy type Valid values are tag. + tag_key: (String) The key of the tag + tag_key_required: (Boolean) If a tag key is required for monitor creation + tag_policy: '(Block List, Max: 1) Config for a tag policy. Only set if policy_type is tag. (see below for nested schema)' + valid_tag_values: (List of String) Valid values for the tag + importStatements: [] + datadog_monitor_json: + subCategory: "" + description: Provides a Datadog monitor JSON resource. This can be used to create and manage Datadog monitors using the JSON definition. + name: datadog_monitor_json + title: datadog_monitor_json Resource - terraform-provider-datadog + examples: + - name: monitor_json + manifest: |- + { + "monitor": "{\n \"name\": \"Example monitor - service check\",\n \"type\": \"service check\",\n \"query\": \"\\\"ntp.in_sync\\\".by(\\\"*\\\").last(2).count_by_status()\",\n \"message\": \"Change the message triggers if any host's clock goes out of sync with the time given by NTP. The offset threshold is configured in the Agent's 'ntp.yaml' file.\\n\\nSee [Troubleshooting NTP Offset issues](https://docs.datadoghq.com/agent/troubleshooting/ntp for more details on cause and resolution.\",\n \"tags\": [],\n \"multi\": true,\n\t\"restricted_roles\": null,\n \"options\": {\n \"include_tags\": true,\n \"locked\": false,\n \"new_host_delay\": 150,\n \"notify_audit\": false,\n \"notify_no_data\": false,\n \"thresholds\": {\n \"warning\": 1,\n \"ok\": 1,\n \"critical\": 1\n }\n },\n \"priority\": null,\n \"classification\": \"custom\"\n}\n" + } + argumentDocs: + id: (String) The ID of this resource. + monitor: (String) The JSON formatted definition of the monitor. + url: (String) The URL of the monitor. + importStatements: + - terraform import datadog_monitor_json.monitor_json 123456 + datadog_openapi_api: + subCategory: "" + description: Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. + name: datadog_openapi_api + title: datadog_openapi_api Resource - terraform-provider-datadog + examples: + - name: my-api + manifest: |- + { + "spec": "${file(\"./path/my-api.yaml\")}" + } + argumentDocs: + id: (String) The ID of this resource. + spec: (String) The OpenAPI spec. + importStatements: + - terraform import datadog_openapi_api.new_list "90646597-5fdb-4a17-a240-647003f8c028" + datadog_organization_settings: + subCategory: "" + description: Provides a Datadog Organization resource. This can be used to manage your Datadog organization's settings. + name: datadog_organization_settings + title: datadog_organization_settings Resource - terraform-provider-datadog + examples: + - name: organization + manifest: |- + { + "name": "foo-organization" + } + argumentDocs: + description: (String) Description of the organization. + domains: (List of String) List of domains where the SAML automated user creation is enabled. + enabled: (Boolean) Whether or not SAML is enabled for this organization. Defaults to false. + id: (String) The ID of this resource. + name: (String) Name for Organization. + private_widget_share: (Boolean) Whether or not the organization users can share widgets outside of Datadog. Defaults to false. + public_id: (String) The public_id of the organization you are operating within. + saml: '(Block List, Min: 1, Max: 1) SAML properties (see below for nested schema)' + saml_autocreate_access_role: '(String) The access role of the user. Options are st (standard user), adm (admin user), or ro (read-only user). Allowed enum values: st, adm , ro, ERROR Defaults to "st".' + saml_autocreate_users_domains: '(Block List, Min: 1, Max: 1) List of domains where the SAML automated user creation is enabled. (see below for nested schema)' + saml_can_be_enabled: (Boolean) Whether or not SAML can be enabled for this organization. + saml_idp_endpoint: (String) Identity provider endpoint for SAML authentication. + saml_idp_initiated_login: '(Block List, Min: 1, Max: 1) Whether or not a SAML identity provider metadata file was provided to the Datadog organization. (see below for nested schema)' + saml_idp_metadata_uploaded: (Boolean) Whether or not a SAML identity provider metadata file was provided to the Datadog organization. + saml_login_url: (String) URL for SAML logging. + saml_strict_mode: '(Block List, Min: 1, Max: 1) Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. (see below for nested schema)' + settings: '(Block List, Max: 1) Organization settings (see below for nested schema)' + importStatements: + - terraform import datadog_organization_settings.organization 11111111-2222-3333-4444-555555555555 + datadog_powerpack: + subCategory: "" + description: Provides a Datadog powerpack resource. This can be used to create and manage Datadog powerpacks. + name: datadog_powerpack + title: datadog_powerpack Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "description": "Created using the Datadog provider in terraform", + "layout": [ + { + "height": 10, + "width": 3, + "x": 1, + "y": 0 + } + ], + "live_span": "4h", + "template_variables": [ + { + "defaults": [ + "defaults" + ], + "name": "datacenter" + } + ], + "widget": [ + { + "event_stream_definition": [ + { + "event_size": "l", + "query": "*", + "title": "Widget Title", + "title_align": "right", + "title_size": 16 + } + ] + } + ] + } + dependencies: + datadog_organization_settings.organization: |- + { + "name": "foo-organization" + } + argumentDocs: + additional_query_filters: (String) Additional filters applied to the SLO query. + aggregation: (String) The aggregation method. + aggregator: (String) The aggregation methods available for cloud cost queries. Valid values are avg, last, max, min, sum, percentile. + alert_graph_definition: '(Block List, Max: 1) The definition for a Alert Graph widget. (see below for nested schema)' + alert_id: (String) The ID of the monitor used by the widget. + alert_value_definition: '(Block List, Max: 1) The definition for a Alert Value widget. (see below for nested schema)' + alias: (String) An expression alias. + alias_name: (String) The expression alias. + apm_dependency_stats_query: '(Block List, Max: 1) The APM Dependency Stats query using formulas and functions. (see below for nested schema)' + apm_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + apm_resource_stats_query: '(Block List, Max: 1) The APM Resource Stats query using formulas and functions. (see below for nested schema)' + apm_stats_query: '(Block List, Max: 1) (see below for nested schema)' + audit_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + autoscale: (Boolean) A Boolean indicating whether to automatically scale the tile. + background_color: (String) The background color of the note. + cell_display_mode: (String) A list of display modes for each table cell. Valid values are number, bar. + change_definition: '(Block List, Max: 1) The definition for a Change widget. (see below for nested schema)' + change_type: (String) Whether to show absolute or relative change. Valid values are absolute, relative. + check: (String) The check to use in the widget. + check_status_definition: '(Block List, Max: 1) The definition for a Check Status widget. (see below for nested schema)' + cloud_cost_query: '(Block List, Max: 1) The Cloud Cost query using formulas and functions. (see below for nested schema)' + color: (String) The color of the text in the widget. + color_by_groups: (List of String) List of groups used for colors. + color_preference: (String) Whether to colorize text or background. Valid values are background, text. + column: (String) The facet path for the column. + columns: (Block List) Column properties used by the front end for display. (see below for nested schema) + comparator: (String) The comparator to use. Valid values are =, >, >=, <, <=. + compare_to: (String) Choose from when to compare current data to. Valid values are hour_before, day_before, week_before, month_before. + compute: '(Block List, Min: 1) The compute options. (see below for nested schema)' + compute_query: '(Block List, Max: 1) compute_query or multi_compute is required. The map keys are listed below. (see below for nested schema)' + conditional_formats: (Block List) Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple conditional_formats blocks are allowed using the structure below. (see below for nested schema) + content: (String) The content of the note. + count: (Number) The number of results to return. + custom_bg_color: (String) The color palette to apply to the background, same values available as palette. + custom_fg_color: (String) The color palette to apply to the foreground, same values available as palette. + custom_link: (Block List) A nested block describing a custom link. Multiple custom_link blocks are allowed using the structure below. (see below for nested schema) + custom_unit: (String) The unit for the value displayed in the widget. + data_source: (String) The data source for APM Dependency Stats queries. Valid values are apm_dependency_stats. + defaults: (List of String) One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with OR. + description: (String) The description of the powerpack. + dimension: (String) Dimension of the Scatterplot. Valid values are x, y, radius, color. + display_format: (String) The display setting to use. Valid values are counts, countsAndList, list. + display_type: '(String) How the marker lines are displayed, options are one of {error, warning, info, ok} combined with one of {dashed, solid, bold}. Example: error dashed.' + distribution_definition: '(Block List, Max: 1) The definition for a Distribution widget. (see below for nested schema)' + env: (String) APM environment. + event: (Block List) The definition of the event to overlay on the graph. Multiple event blocks are allowed using the structure below. (see below for nested schema) + event_query: '(Block List, Max: 1) A timeseries formula and functions events query. (see below for nested schema)' + event_size: (String) The size to use to display an event. Valid values are s, l. + event_stream_definition: '(Block List, Max: 1) The definition for a Event Stream widget. (see below for nested schema)' + event_timeline_definition: '(Block List, Max: 1) The definition for a Event Timeline widget. (see below for nested schema)' + expression: (String) The expression name. + facet: (String) The facet name. + field: (String) Widget column field. + fill: (Block List) The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query or process_query is required within the request block). (see below for nested schema) + fill_max: (String) The max value to use to color the map. + fill_min: (String) The min value to use to color the map. + filter_by: (List of String) A list of processes. + filters: (List of String) Your environment and primary tag (or * if enabled for your account). + focus: (String) The two-letter ISO code of a country to focus the map on (or WORLD). + font_size: (String) The size of the text in the widget. + formula: (Block List) (see below for nested schema) + formula_expression: (String) A string expression built from queries, formulas, and functions. + free_text_definition: '(Block List, Max: 1) The definition for a Free Text widget. (see below for nested schema)' + geomap_definition: '(Block List, Max: 1) The definition for a Geomap widget. (see below for nested schema)' + global_time_target: (String) The global time target of the widget. + group: (String) The check group to use in the widget. + group_by: (Block List) Multiple group_by blocks are allowed using the structure below. (see below for nested schema) + group_mode: (String) Group mode to query measures. Valid values are overall, components. Defaults to "overall". + grouping: (String) The kind of grouping to use. Valid values are check, cluster. + has_background: (Boolean) Whether to display a background or not. Defaults to true. + has_border: (Boolean) Whether to display a border or not. Defaults to true. + has_padding: (Boolean) Whether to add padding or not. Defaults to true. + has_search_bar: (String) Controls the display of the search bar. Valid values are always, never, auto. + heatmap_definition: '(Block List, Max: 1) The definition for a Heatmap widget. (see below for nested schema)' + height: (Number) The height of the widget. + hide_percent: (Boolean) Whether to hide the percentages of the groups. + hide_total: (Boolean) Whether or not to show the total value in the widget. + hide_value: (Boolean) Setting this to True hides values. + hide_zero_counts: (Boolean) A Boolean indicating whether to hide empty categories. + horizontal_align: (String) The horizontal alignment for the widget. Valid values are center, left, right. + hostmap_definition: '(Block List, Max: 1) The definition for a Hostmap widget. (see below for nested schema)' + id: (String) The ID of this resource. + iframe_definition: '(Block List, Max: 1) The definition for an Iframe widget. (see below for nested schema)' + image_definition: '(Block List, Max: 1) The definition for an Image widget (see below for nested schema)' + image_url: (String) Displays an image as the background. + include_zero: (Boolean) Always include zero or fit the axis to the data range. + increase_good: (Boolean) A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red). + index: (String) The name of the index to query. + indexes: (List of String) An array of index names to query in the stream. + input: (Block List) Array of workflow inputs to map to dashboard template variables. (see below for nested schema) + interval: (Number) Define the time interval in seconds. + is_column_break: (Boolean) Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to true. + is_hidden: (Boolean) The flag for toggling context menu link visibility. + is_normalized_cpu: (Boolean) Whether to normalize the CPU percentages. + is_upstream: (Boolean) Determines whether stats for upstream or downstream dependencies should be queried. + label: (String) The label for the custom link URL. + layout: '(Block List, Max: 1) The layout of the powerpack on a free-form dashboard. (see below for nested schema)' + legend_columns: (Set of String) A list of columns to display in the legend. Valid values are value, avg, sum, min, max. + legend_inline: '(Block List, Max: 1) Used to configure the inline legend. Cannot be used in conjunction with legend_table. (see below for nested schema)' + legend_layout: (String) The layout of the legend displayed in the widget. Valid values are auto, horizontal, vertical. + legend_size: (String) The size of the legend displayed in the widget. + legend_table: '(Block List, Max: 1) Used to configure the table legend. Cannot be used in conjunction with legend_inline. (see below for nested schema)' + limit: (Number) The maximum number of items in the group. + line_type: (String) The type of lines displayed. Valid values are dashed, dotted, solid. + line_width: (String) The width of line displayed. Valid values are normal, thick, thin. + link: (String) The URL of the custom link. + list_stream_definition: '(Block List, Max: 1) The definition for a List Stream widget. (see below for nested schema)' + live_span: (String) The timeframe to use when displaying the widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + log_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + log_stream_definition: '(Block List, Max: 1) The definition for an Log Stream widget. (see below for nested schema)' + manage_status_definition: '(Block List, Max: 1) The definition for an Manage Status widget. (see below for nested schema)' + margin: '(String) The margins to use around the image. Note: small and large values are deprecated. Valid values are sm, md, lg, small, large.' + marker: (Block List) A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple marker blocks are allowed within a given tile_def block. (see below for nested schema) + max: (String) Specify the maximum value to show on the Y-axis. + measure: (String) SLO measures queries. Valid values are good_events, bad_events, slo_status, error_budget_remaining, burn_rate, error_budget_burndown. + message_display: (String) The number of log lines to display. Valid values are inline, expanded-md, expanded-lg. + metadata: (Block List) Used to define expression aliases. Multiple metadata blocks are allowed using the structure below. (see below for nested schema) + metric: (String) The metric from the request to correlate with this conditional format. + metric_query: '(Block List, Max: 1) A timeseries formula and functions metrics query. (see below for nested schema)' + min: (String) Specify the minimum value to show on the Y-axis. + multi_compute: (Block List) compute_query or multi_compute is required. Multiple multi_compute blocks are allowed using the structure below. (see below for nested schema) + name: (String) The name for the powerpack. + network_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + no_group_hosts: (Boolean) A Boolean indicating whether to show ungrouped nodes. + no_metric_hosts: (Boolean) A Boolean indicating whether to show nodes with no metrics. + node_type: (String) The type of node used. Valid values are host, container. + note_definition: '(Block List, Max: 1) The definition for a Note widget. (see below for nested schema)' + on_right_yaxis: (Boolean) A Boolean indicating whether the request uses the right or left Y-Axis. + operation_name: (String) Name of operation on service. + order: (String) Widget sorting methods. Valid values are asc, desc. + order_by: (String) What to order by. Valid values are change, name, present, past. + order_dir: (String) Widget sorting method. Valid values are asc, desc. + override_label: (String) The label ID that refers to a context menu link item. When override_label is provided, the client request omits the label field. + palette: (String) The color palette to apply. Valid values are blue, custom_bg, custom_image, custom_text, gray_on_white, grey, green, orange, red, red_on_white, white_on_gray, white_on_green, green_on_white, white_on_red, white_on_yellow, yellow_on_white, black_on_light_yellow, black_on_light_green, black_on_light_red. + palette_flip: (Boolean) A Boolean indicating whether to flip the palette tones. + palette_index: (Number) Index specifying which color to use within the palette. + precision: (Number) The precision to use when displaying the value. Use * for maximum precision. + primary_tag: (String) The organization's host group name and value. + primary_tag_name: (String) The name of the second primary tag used within APM; required when primary_tag_value is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog. + primary_tag_value: (String) Filter APM data by the second primary tag. primary_tag_name must also be specified. + process_query: '(Block List, Max: 1) The process query to use in the widget. The structure of this block is described below. (see below for nested schema)' + q: (String) The metric query to use for this widget. + query: (Block List) (see below for nested schema) + query_string: (String) Widget query. + query_table_definition: '(Block List, Max: 1) The definition for a Query Table widget. (see below for nested schema)' + query_value_definition: '(Block List, Max: 1) The definition for a Query Value widget. (see below for nested schema)' + request: (Block List) A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query or process_query is required within the request block). (see below for nested schema) + request_type: (String) The request type for the SLO List request. Valid values are slo_list. + resource: (String) The resource name. + resource_name: (String) APM resource. + response_format: (String) Widget response format. Valid values are event_list. + right_yaxis: '(Block List, Max: 1) A nested block describing the right Y-Axis Controls. See the on_right_yaxis property for which request will use this axis. The structure of this block is described below. (see below for nested schema)' + row_type: (String) The level of detail for the request. Valid values are service, resource, span. + rum_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + run_workflow_definition: '(Block List, Max: 1) The definition for a Run Workflow widget. (see below for nested schema)' + scale: '(String) Specify the scale type, options: linear, log, pow, sqrt.' + scatterplot_definition: '(Block List, Max: 1) The definition for a Scatterplot widget. (see below for nested schema)' + scatterplot_table: (Block List) Scatterplot request containing formulas and functions. (see below for nested schema) + scope: (List of String) The list of tags to filter nodes by. + search: '(Block List, Max: 1) The search options. (see below for nested schema)' + search_by: (String) Your chosen search term. + search_query: (String) The search query to use. + security_query: '(Block List, Max: 1) The query to use for this widget. (see below for nested schema)' + service: (String) APM service. + service_level_objective_definition: '(Block List, Max: 1) The definition for a Service Level Objective widget. (see below for nested schema)' + servicemap_definition: '(Block List, Max: 1) The definition for a Service Map widget. (see below for nested schema)' + show_breakdown: (Boolean) Whether to show the latency breakdown or not. + show_date_column: (Boolean) If the date column should be displayed. + show_distribution: (Boolean) Whether to show the latency distribution or not. + show_error_budget: (Boolean) Whether to show the error budget or not. + show_errors: (Boolean) Whether to show the error metrics or not. + show_hits: (Boolean) Whether to show the hits metrics or not + show_last_triggered: (Boolean) A Boolean indicating whether to show when monitors/groups last triggered. + show_latency: (Boolean) Whether to show the latency metrics or not. + show_legend: (Boolean) Whether or not to show the legend on this widget. + show_message_column: (Boolean) If the message column should be displayed. + show_present: (Boolean) If set to true, displays the current value. + show_priority: (Boolean) Whether to show the priorities column. + show_resource_list: (Boolean) Whether to show the resource list or not. + show_tick: (Boolean) Whether to show a tick or not. + show_title: (Boolean) Whether or not title should be displayed in the powerpack. + size: (Block List) The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of q, apm_query, log_query, rum_query, security_query or process_query is required within the request block). (see below for nested schema) + size_format: (String) The size of the widget. Valid values are small, medium, large. + sizing: '(String) The preferred method to adapt the dimensions of the image. The values are based on the image object-fit CSS properties. Note: zoom, fit and center values are deprecated. Valid values are fill, contain, cover, none, scale-down, zoom, fit, center.' + slo_id: (String) ID of an SLO to query. + slo_list_definition: '(Block List, Max: 1) The definition for an SLO (Service Level Objective) List widget. (see below for nested schema)' + slo_query: '(Block List, Max: 1) The SLO query using formulas and functions. (see below for nested schema)' + slo_query_type: (String) type of the SLO to query. Valid values are metric. Defaults to "metric". + sort: '(Block List, Max: 1) The options for sorting group by results. (see below for nested schema)' + sort_query: '(Block List, Max: 1) A list of exactly one element describing the sort query to use. (see below for nested schema)' + span_name: (String) APM span name + stat: (String) APM statistic. Valid values are avg_duration, avg_root_duration, avg_spans_per_trace, error_rate, pct_exec_time, pct_of_traces, total_traces_count. + storage: (String) Storage location (private beta). + style: '(Block List, Max: 1) Styling options for widget formulas. (see below for nested schema)' + summary_type: (String) The summary type to use. Valid values are monitors, groups, combined. + sunburst_definition: '(Block List, Max: 1) The definition for a Sunburst widget. (see below for nested schema)' + tag_filters: (List of String) An array of tags to filter by. + tags: (Set of String) List of tags to identify this powerpack. + tags_execution: '(String) The execution method for multi-value filters, options: and or or.' + template_variables: (Block List) The list of template variables for this powerpack. (see below for nested schema) + text: (String) The text to display in the widget. + text_align: (String) The alignment of the text in the widget. Valid values are center, left, right. + text_filter: (String) The text to use as a filter. + tick_edge: (String) When tick = true, a string indicating on which side of the widget the tick should be displayed. Valid values are bottom, left, right, top. + tick_pos: '(String) When tick = true, a string with a percent sign indicating the position of the tick, for example: tick_pos = "50%" is centered alignment.' + time_windows: (List of String) A list of time windows to display in the widget. Valid values are 7d, 30d, 90d, week_to_date, previous_week, month_to_date, previous_month, global_time. + timeframe: (String) Defines the displayed timeframe. + timeseries_background: '(Block List, Max: 1) Set a timeseries on the widget background. (see below for nested schema)' + timeseries_definition: '(Block List, Max: 1) The definition for a Timeseries widget. (see below for nested schema)' + title: (String) The title of the widget. + title_align: (String) The alignment of the widget's title. Valid values are center, left, right. + title_size: (String) The size of the widget's title (defaults to 16). + toplist_definition: '(Block List, Max: 1) The definition for a Toplist widget. (see below for nested schema)' + topology_map_definition: '(Block List, Max: 1) The definition for a Topology Map widget. (see below for nested schema)' + trace_service_definition: '(Block List, Max: 1) The definition for a Trace Service widget. (see below for nested schema)' + treemap_definition: '(Block List, Max: 1) The definition for a Treemap widget. (see below for nested schema)' + type: (String) Whether the Timeseries is made using an area or bars. Valid values are bars, area. + unit: (String) The unit for the value displayed in the widget. + url: (String) The URL to use as a data source for the widget. + url_dark_theme: (String) The URL in dark mode to use as a data source for the widget. + value: (Number) A value for the comparator. + vertical_align: (String) The vertical alignment for the widget. Valid values are center, top, bottom. + view: '(Block List, Min: 1, Max: 1) The view of the world that the map should render. (see below for nested schema)' + view_mode: (String) The view mode for the widget. Valid values are overall, component, both. + view_type: (String) The type of view to use when displaying the widget. Only detail is supported. + viz_type: (String) Type of visualization to use when displaying the widget. Valid values are timeseries, toplist. + widget: (Block List) The list of widgets to display in the powerpack. (see below for nested schema) + widget_layout: '(Block List, Max: 1) The layout of the widget on a ''free'' dashboard. (see below for nested schema)' + width: (Number) The width of the widget. + workflow_id: (String) Workflow ID + x: (Number) The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0. + xaxis: '(Block List, Max: 1) A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below. (see below for nested schema)' + "y": (Number) The position of the widget on the y (vertical) axis. Should be greater than or equal to 0. + yaxis: '(Block List, Max: 1) A nested block describing the Y-Axis Controls. The structure of this block is described below. (see below for nested schema)' + importStatements: + - terraform import datadog_powerpack.foo 11111111-2222-3333-4444-555555555555 + datadog_restriction_policy: + subCategory: "" + description: Provides a Datadog RestrictionPolicy resource. This can be used to create and manage Datadog restriction policies. + name: datadog_restriction_policy + title: datadog_restriction_policy Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "bindings": [ + { + "principals": [ + "role:00000000-0000-1111-0000-000000000000" + ], + "relation": "editor" + }, + { + "principals": [ + "org:10000000-0000-1111-0000-000000000000" + ], + "relation": "viewer" + } + ], + "resource_id": "security-rule:abc-def-ghi" + } + argumentDocs: + bindings: (Block Set) (see below for nested schema) + id: (String) The ID of this resource. + principals: '(Set of String) An array of principals. A principal is a subject or group of subjects. Each principal is formatted as type:id. Supported types: role and org. The org ID can be obtained through the api/v2/users API.' + relation: (String) The role/level of access. See this page for more details https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources + resource_id: (String) Identifier for the resource, formatted as resource_type:resource_id. + importStatements: + - terraform import datadog_restriction_policy.new_list "" + datadog_role: + subCategory: "" + description: Provides a Datadog role resource. This can be used to create and manage Datadog roles. + name: datadog_role + title: datadog_role Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "name": "foo", + "permission": [ + { + "id": "${data.datadog_permissions.bar.permissions.monitors_downtime}" + }, + { + "id": "${data.datadog_permissions.bar.permissions.monitors_write}" + } + ] + } + references: + permission.id: data.datadog_permissions.bar.permissions.monitors_write + argumentDocs: + id: (String) The ID of this resource. + name: (String) Name of the role. + permission: (Block Set) Set of objects containing the permission ID and the name of the permissions granted to this role. (see below for nested schema) + user_count: (Number) Number of users that have this role. + validate: (Boolean) If set to false, skip the validation call done during plan. + importStatements: + - |- + # Roles can be imported using their ID, e.g. + terraform import datadog_role.example_role 000000-0000-0000-0000-000000000000 + datadog_rum_application: + subCategory: "" + description: Provides a Datadog RUM application resource. This can be used to create and manage Datadog RUM applications. + name: datadog_rum_application + title: datadog_rum_application Resource - terraform-provider-datadog + examples: + - name: rum_application + manifest: |- + { + "name": "my-application", + "type": "browser" + } + argumentDocs: + client_token: (String) The client token. + id: (String) The ID of this resource. + name: (String) Name of the RUM application. + type: (String) Type of the RUM application. Supported values are browser, ios, android, react-native, flutter. Defaults to "browser". + importStatements: + - terraform import datadog_rum_application.rum_application a1b2c3d4-a1b2-a1b2-a1b2-a1b2c3d4e5f6 + datadog_security_monitoring_default_rule: + subCategory: "" + description: Provides a Datadog Security Monitoring Rule API resource for default rules. It can only be imported, you can't create a default rule. + name: datadog_security_monitoring_default_rule + title: datadog_security_monitoring_default_rule Resource - terraform-provider-datadog + examples: + - name: adefaultrule + manifest: |- + { + "case": [ + { + "notifications": [ + "@me" + ], + "status": "high" + } + ], + "enabled": true + } + argumentDocs: + action: '(String) The type of filtering action. Allowed enum values: require, suppress Valid values are require, suppress.' + case: '(Block List, Max: 10) Cases of the rule, this is used to update notifications. (see below for nested schema)' + decrease_criticality_based_on_env: (Boolean) If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + enabled: (Boolean) Enable the rule. Defaults to true. + filter: (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + id: (String) The ID of this resource. + notifications: (List of String) Notification targets for each rule case. + options: '(Block List, Max: 1) Options on default rules. Note that only a subset of fields can be updated on default rule options. (see below for nested schema)' + query: (String) Query for selecting logs to apply the filtering action. + status: (String) Status of the rule case to match. Valid values are info, low, medium, high, critical. + type: (String) The rule type. + importStatements: + - |- + # Default rules need to be imported using their ID before applying. + resource "datadog_security_monitoring_default_rule" "adefaultrule" { + } + + terraform import datadog_security_monitoring_default_rule.adefaultrule m0o-hto-lkb + datadog_security_monitoring_filter: + subCategory: "" + description: Provides a Datadog Security Monitoring Rule API resource for security filters. + name: datadog_security_monitoring_filter + title: datadog_security_monitoring_filter Resource - terraform-provider-datadog + examples: + - name: my_filter + manifest: |- + { + "exclusion_filter": [ + { + "name": "first", + "query": "exclude some logs" + }, + { + "name": "second", + "query": "exclude some other logs" + } + ], + "is_enabled": true, + "name": "My filter", + "query": "The filter is filtering." + } + argumentDocs: + exclusion_filter: (Block List) Exclusion filters to exclude some logs from the security filter. (see below for nested schema) + filtered_data_type: (String) The filtered data type. Valid values are logs. Defaults to "logs". + id: (String) The ID of this resource. + is_enabled: (Boolean) Whether the security filter is enabled. + name: (String) The name of the security filter. + query: (String) The query of the security filter. + version: (Number) The version of the security filter. + importStatements: + - |- + # Security monitoring filters can be imported using ID, e.g. + terraform import datadog_security_monitoring_filter.my_filter m0o-hto-lkb + datadog_security_monitoring_rule: + subCategory: "" + description: Provides a Datadog Security Monitoring Rule API resource. This can be used to create and manage Datadog security monitoring rules. To change settings for a default rule use datadog_security_default_rule instead. + name: datadog_security_monitoring_rule + title: datadog_security_monitoring_rule Resource - terraform-provider-datadog + examples: + - name: myrule + manifest: |- + { + "case": [ + { + "condition": "errors \u003e 3 \u0026\u0026 warnings \u003e 10", + "notifications": [ + "@user" + ], + "status": "high" + } + ], + "enabled": true, + "message": "The rule has triggered.", + "name": "My rule", + "options": [ + { + "evaluation_window": 300, + "keep_alive": 600, + "max_signal_duration": 900 + } + ], + "query": [ + { + "aggregation": "count", + "group_by_fields": [ + "host" + ], + "name": "errors", + "query": "status:error" + }, + { + "aggregation": "count", + "group_by_fields": [ + "host" + ], + "name": "warnings", + "query": "status:warning" + } + ], + "tags": [ + "type:dos" + ] + } + argumentDocs: + action: (String) The type of filtering action. Valid values are require, suppress. + agent_rule: (Block List, Deprecated) Deprecated. It won't be applied anymore. Deprecated. agent_rule has been deprecated in favor of new Agent Rule resource. (see below for nested schema) + agent_rule_id: (String) Deprecated. It won't be applied anymore. + aggregation: (String) The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are count, cardinality, sum, max, new_value, geo_data, event_count, none. Defaults to "count". + baseline_user_locations: (Boolean) If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to false. + case: '(Block List, Max: 10) Cases for generating signals. (see below for nested schema)' + condition: (String) A rule case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated based on the event counts in the previously defined queries. + correlated_by_fields: (List of String) Fields to correlate by. + correlated_query_index: (String) Index of the rule query used to retrieve the correlated field. An empty string applies correlation on the non-projected per query attributes of the rule. Defaults to "". + decrease_criticality_based_on_env: (Boolean) If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with staging, test, or dev. Only available when the rule type is log_detection. Defaults to false. + default_notifications: (List of String) Notification targets for the default rule case, when none of the third-party cases match. + default_rule_id: (String) Default Rule ID of the signal to correlate. This value is READ-ONLY. + default_status: (String) Severity of the default rule case, when none of the third-party cases match. Valid values are info, low, medium, high, critical. + detection_method: (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party. Defaults to "threshold". + distinct_fields: (List of String) Field for which the cardinality is measured. Sent as an array. + enabled: (Boolean) Whether the rule is enabled. Defaults to true. + evaluation_window: (Number) A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200. + expression: (String) Deprecated. It won't be applied anymore. + filter: (Block List) Additional queries to filter matched events before they are processed. (see below for nested schema) + forget_after: (Number) The duration in days after which a learned value is forgotten. Valid values are 1, 2, 7, 14, 21, 28. + group_by_fields: (List of String) Fields to group by. If empty, each log triggers a signal. + has_extended_title: (Boolean) Whether the notifications include the triggering group-by values in their title. Defaults to false. + id: (String) The ID of this resource. + impossible_travel_options: '(Block List, Max: 1) Options for rules using the impossible travel detection method. (see below for nested schema)' + keep_alive: (Number) Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600. + learning_duration: (Number) The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are 0, 1, 7. Defaults to 1. + learning_method: (String) The learning method used to determine when signals should be generated for values that weren't learned. Valid values are duration, threshold. Defaults to "duration". + learning_threshold: (Number) A number of occurrences after which signals are generated for values that weren't learned. Valid values are 0, 1. Defaults to 0. + max_signal_duration: (Number) A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400. + message: (String) Message for generated signals. + metric: (String, Deprecated) The target field to aggregate over when using the sum, max, or geo_data aggregations. Deprecated. Configure metrics instead. This attribute will be removed in the next major version of the provider. + metrics: (List of String) Group of target fields to aggregate over when using the sum, max, geo_data, or new_value aggregations. The sum, max, and geo_data aggregations only accept one value in this list, whereas the new_value aggregation accepts up to five values. + name: (String) The name of the rule. + new_value_options: '(Block List, Max: 1) New value rules specific options. (see below for nested schema)' + notifications: (List of String) Notification targets for each rule case. + options: '(Block List, Max: 1) Options on rules. (see below for nested schema)' + query: (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + root_query: '(Block List, Min: 1, Max: 10) Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert. (see below for nested schema)' + rule_id: (String) Rule ID of the signal to correlate. + signal_query: (Block List) Queries for selecting logs which are part of the rule. (see below for nested schema) + signal_title_template: (String) A template for the signal title; if omitted, the title is generated based on the case name. + status: (String) Severity of the Security Signal. Valid values are info, low, medium, high, critical. + tags: (Set of String) Tags for generated signals. + third_party_case: '(Block List, Max: 10) Cases for generating signals for third-party rules. Only required and accepted for third-party rules (see below for nested schema)' + third_party_rule_options: '(Block List, Max: 1) Options for rules using the third-party detection method. (see below for nested schema)' + type: (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + importStatements: + - |- + # Security monitoring rules can be imported using ID, e.g. + terraform import datadog_security_monitoring_rule.my_rule m0o-hto-lkb + datadog_security_monitoring_suppression: + subCategory: "" + description: Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules. + name: datadog_security_monitoring_suppression + title: datadog_security_monitoring_suppression Resource - terraform-provider-datadog + examples: + - name: my_suppression + manifest: |- + { + "description": "Suppression for low severity CloudTrail signals from test environments limited to 2024", + "enabled": true, + "expiration_date": "2024-12-31T12:00:00Z", + "name": "My suppression", + "rule_query": "severity:low source:cloudtrail", + "suppression_query": "env:test" + } + argumentDocs: + description: (String) A description for the suppression rule. + enabled: (Boolean) Whether the suppression rule is enabled. + expiration_date: (String) A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. + id: (String) The ID of this resource. + name: (String) The name of the suppression rule. + rule_query: (String) The rule query of the suppression rule, with the same syntax as the search bar for detection rules. + suppression_query: (String) The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer. + importStatements: + - |- + # Security monitoring suppressions can be imported using ID, for example: + terraform import datadog_security_monitoring_suppression.my_suppression m0o-hto-lkb + datadog_sensitive_data_scanner_group: + subCategory: "" + description: Provides a Sensitive Data Scanner group resource. + name: datadog_sensitive_data_scanner_group + title: datadog_sensitive_data_scanner_group Resource - terraform-provider-datadog + examples: + - name: mygroup + manifest: |- + { + "description": "A relevant description", + "filter": [ + { + "query": "service:my-service" + } + ], + "is_enabled": true, + "name": "My new scanning group", + "product_list": [ + "apm" + ] + } + argumentDocs: + description: (String) Description of the Datadog scanning group. + filter: '(Block List, Min: 1, Max: 1) Filter object the scanning group applies. (see below for nested schema)' + id: (String) The ID of this resource. + is_enabled: (Boolean) Whether or not the scanning group is enabled. If the group doesn't contain any rule or if all the rules in it are disabled, the group is force-disabled by our backend + name: (String) Name of the Datadog scanning group. + product_list: (Set of String) List of products the scanning group applies. Valid values are logs, rum, events, apm. + query: (String) Query to filter the events. + importStatements: + - terraform import datadog_sensitive_data_scanner_group.new_list "" + datadog_sensitive_data_scanner_group_order: + subCategory: "" + description: Provides a Datadog Sensitive Data Scanner Group Order API resource. This can be used to manage the order of Datadog Sensitive Data Scanner Groups. + name: datadog_sensitive_data_scanner_group_order + title: datadog_sensitive_data_scanner_group_order Resource - terraform-provider-datadog + examples: + - name: mygrouporder + manifest: |- + { + "group_ids": [ + "group-id-1", + "group-id-2", + "group-id-3" + ] + } + argumentDocs: + group_ids: (List of String) The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list. + id: (String) The ID of this resource. + importStatements: + - terraform import datadog_sensitive_data_scanner_group_order.mygrouporder order + datadog_sensitive_data_scanner_rule: + subCategory: "" + description: Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitivedatascanner_rule. Setting the create_before_destroy lifecycle Meta-argument to true is highly recommended if modifying the included_keyword_configuration field to avoid unexpectedly disabling Sensitive Data Scanner groups. + name: datadog_sensitive_data_scanner_rule + title: datadog_sensitive_data_scanner_rule Resource - terraform-provider-datadog + examples: + - name: myrule + manifest: |- + { + "description": "Another description", + "excluded_namespaces": [ + "username" + ], + "group_id": "${datadog_sensitive_data_scanner_group.mygroup.id}", + "included_keyword_configuration": [ + { + "character_count": 30, + "keywords": [ + "cc", + "credit card" + ] + } + ], + "is_enabled": true, + "lifecycle": [ + { + "create_before_destroy": true + } + ], + "name": "My new rule", + "pattern": "myregex", + "tags": [ + "sensitive_data:true" + ], + "text_replacement": [ + { + "number_of_chars": 0, + "replacement_string": "", + "type": "hash" + } + ] + } + references: + group_id: datadog_sensitive_data_scanner_group.mygroup.id + dependencies: + datadog_sensitive_data_scanner_group.mygroup: |- + { + "description": "A relevant description", + "filter": [ + { + "query": "service:my-service" + } + ], + "is_enabled": true, + "name": "My new scanning group", + "product_list": [ + "apm" + ] + } + - name: mylibraryrule + manifest: |- + { + "description": "A description", + "excluded_namespaces": [ + "username" + ], + "group_id": "${datadog_sensitive_data_scanner_group.mygroup.id}", + "is_enabled": true, + "name": "My library rule", + "standard_pattern_id": "${data.datadog_sensitive_data_scanner_standard_pattern.aws_sp.id}", + "tags": [ + "sensitive_data:true" + ] + } + references: + group_id: datadog_sensitive_data_scanner_group.mygroup.id + standard_pattern_id: data.datadog_sensitive_data_scanner_standard_pattern.aws_sp.id + dependencies: + datadog_sensitive_data_scanner_group.mygroup: |- + { + "description": "A relevant description", + "filter": [ + { + "query": "service:my-service" + } + ], + "is_enabled": true, + "name": "My new scanning group", + "product_list": [ + "apm" + ] + } + argumentDocs: + character_count: (Number) Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive). + description: (String) Description of the rule. + excluded_namespaces: (List of String) Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array. + group_id: (String) Id of the scanning group the rule belongs to. + id: (String) The ID of this resource. + included_keyword_configuration: '(Block List, Max: 1) Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the create_before_destroy lifecycle Meta-argument to true is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups. (see below for nested schema)' + is_enabled: (Boolean) Whether or not the rule is enabled. + keywords: (List of String) Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30. + name: (String) Name of the rule. + namespaces: (List of String) Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned. + number_of_chars: (Number) Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be > 0. + pattern: (String) Not included if there is a relationship to a standard pattern. + replacement_string: (String) Required if type == 'replacement_string'. + standard_pattern_id: (String) Id of the standard pattern the rule refers to. If provided, then pattern must not be provided. + tags: (List of String) List of tags. + text_replacement: '(Block List, Max: 1) Object describing how the scanned event will be replaced. Defaults to type: none (see below for nested schema)' + type: (String) Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are none, hash, replacement_string, partial_replacement_from_beginning, partial_replacement_from_end. + importStatements: + - terraform import datadog_sensitive_data_scanner_rule.new_list "" + datadog_service_account: + subCategory: "" + description: Provides a Datadog service account resource. This can be used to create and manage Datadog service accounts. + name: datadog_service_account + title: datadog_service_account Resource - terraform-provider-datadog + examples: + - name: bar + manifest: |- + { + "email": "new@example.com", + "name": "Service Account Bar", + "roles": [ + "${data.datadog_role.ro_role.id}" + ] + } + argumentDocs: + disabled: (Boolean) Whether the service account is disabled. Defaults to false. + email: (String) Email of the associated user. + id: (String) The ID of this resource. + name: (String) Name for the service account. + roles: (Set of String) A list a role IDs to assign to the service account. + importStatements: + - terraform import datadog_service_account.example_sa 6f1b44c0-30b2-11eb-86bc-279f7c1ebaa4 + datadog_service_account_application_key: + subCategory: "" + description: Provides a Datadog service_account_application_key resource. This can be used to create and manage Datadog service account application keys. + name: datadog_service_account_application_key + title: datadog_service_account_application_key Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "name": "Application key for managing dashboards", + "service_account_id": "00000000-0000-1234-0000-000000000000" + } + argumentDocs: + created_at: (String) Creation date of the application key. + id: (String) The ID of this resource. + key: (String, Sensitive) The value of the service account application key. This value cannot be imported. + last4: (String) The last four characters of the application key. + name: (String) Name of the application key. + service_account_id: (String) ID of the service account that owns this key. + importStatements: + - |- + # Importing a service account's application key cannot import the value of the key. + terraform import datadog_service_account_application_key.this ":" + datadog_service_definition_yaml: + subCategory: "" + description: Provides a Datadog service definition resource. This can be used to create and manage Datadog service definitions in the service catalog using the YAML/JSON definition. + name: datadog_service_definition_yaml + title: datadog_service_definition_yaml Resource - terraform-provider-datadog + examples: + - name: service_definition_v2_2 + manifest: |- + { + "service_definition": "schema-version: v2.2\ndd-service: shopping-cart\nteam: e-commerce-team\ncontacts:\n - name: Support Email\n type: email\n contact: team@shopping.com\n - name: Support Slack\n type: slack\n contact: https://www.slack.com/archives/shopping-cart\ndescription: shopping cart service responsible for managing shopping carts\ntier: high\nlifecycle: production\napplication: e-commerce\nlanguages: \n - go\n - python\ntype: web \nci-pipeline-fingerprints:\n - fp1 \n - fp2 \nlinks:\n - name: shopping-cart runbook\n type: runbook\n url: https://runbook/shopping-cart\n - name: shopping-cart architecture\n type: doc\n provider: gdoc\n url: https://google.drive/shopping-cart-architecture\n - name: shopping-cart service Wiki\n type: doc\n provider: wiki\n url: https://wiki/shopping-cart\n - name: shopping-cart source code\n type: repo\n provider: github\n url: http://github/shopping-cart\ntags:\n - business-unit:retail\n - cost-center:engineering\nintegrations:\n pagerduty: \n service-url: https://www.pagerduty.com/service-directory/Pshopping-cart\nextensions:\n mycompany.com/shopping-cart:\n customField: customValue\n" + } + - name: service_definition_v2_1 + manifest: |- + { + "service_definition": "schema-version: v2.1\ndd-service: shopping-cart\nteam: e-commerce-team\ncontacts:\n - name: Support Email\n type: email\n contact: team@shopping.com\n - name: Support Slack\n type: slack\n contact: https://www.slack.com/archives/shopping-cart\ndescription: shopping cart service responsible for managing shopping carts\ntier: high\nlifecycle: production\napplication: e-commerce\nlinks:\n - name: shopping-cart runbook\n type: runbook\n url: https://runbook/shopping-cart\n - name: shopping-cart architecture\n type: doc\n provider: gdoc\n url: https://google.drive/shopping-cart-architecture\n - name: shopping-cart service Wiki\n type: doc\n provider: wiki\n url: https://wiki/shopping-cart\n - name: shopping-cart source code\n type: repo\n provider: github\n url: http://github/shopping-cart\ntags:\n - business-unit:retail\n - cost-center:engineering\nintegrations:\n pagerduty: \n service-url: https://www.pagerduty.com/service-directory/Pshopping-cart\nextensions:\n mycompany.com/shopping-cart:\n customField: customValue\n" + } + - name: service_definition_v2 + manifest: |- + { + "service_definition": "schema-version: v2\ndd-service: shopping-cart\nteam: E Commerce\ncontacts:\n - name: Support Email\n type: email\n contact: team@shopping.com\n - name: Support Slack\n type: slack\n contact: https://www.slack.com/archives/shopping-cart\nrepos:\n - name: shopping-cart source code\n provider: github\n url: http://github/shopping-cart\ndocs:\n - name: shopping-cart architecture\n provider: gdoc\n url: https://google.drive/shopping-cart-architecture\n - name: shopping-cart service Wiki\n provider: wiki\n url: https://wiki/shopping-cart\nlinks:\n - name: shopping-cart runbook\n type: runbook\n url: https://runbook/shopping-cart\ntags:\n - business-unit:retail\n - cost-center:engineering\nintegrations:\n pagerduty: https://www.pagerduty.com/service-directory/Pshopping-cart\nextensions:\n datadoghq.com/shopping-cart:\n customField: customValue\n" + } + - name: service_definition_backstage + manifest: |- + { + "service_definition": "apiVersion: backstage.io/v1alpha1\nkind: Component\nmetadata:\n annotations:\n backstage.io/techdocs-ref: http://a/b/c\n some.annotation: value\n namespace: default\n name: shopping-cart\n title: Shopping Cart\n description: A shopping cart service\n tags: [\"taga:valuea\", \"tagb:valueb\"]\n links:\n - title: Wiki\n url: https://wiki/shopping-cart\n icon: help\n ignore-attribute:\n id: 1\n value: \"value\"\nspec:\n type: service\n lifecycle: production\n owner: e-commerce\n system: retail\n" + } + argumentDocs: + id: (String) The ID of this resource. + service_definition: (String) The YAML/JSON formatted definition of the service + importStatements: + - terraform import datadog_service_definition_yaml.service_definition "" + datadog_service_level_objective: + subCategory: "" + description: Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives. + name: datadog_service_level_objective + title: datadog_service_level_objective Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "description": "My custom metric SLO", + "name": "Example Metric SLO", + "query": [ + { + "denominator": "sum:my.custom.count.metric{*}.as_count()", + "numerator": "sum:my.custom.count.metric{type:good_events}.as_count()" + } + ], + "tags": [ + "foo:bar", + "baz" + ], + "target_threshold": 99.9, + "thresholds": [ + { + "target": 99.9, + "timeframe": "7d", + "warning": 99.99 + }, + { + "target": 99.9, + "timeframe": "30d", + "warning": 99.99 + } + ], + "timeframe": "30d", + "type": "metric", + "warning_threshold": 99.99 + } + - name: bar + manifest: |- + { + "description": "My custom monitor SLO", + "monitor_ids": [ + 1, + 2, + 3 + ], + "name": "Example Monitor SLO", + "tags": [ + "foo:bar", + "baz" + ], + "target_threshold": 99.9, + "thresholds": [ + { + "target": 99.9, + "timeframe": "7d", + "warning": 99.99 + }, + { + "target": 99.9, + "timeframe": "30d", + "warning": 99.99 + } + ], + "timeframe": "30d", + "type": "monitor", + "warning_threshold": 99.99 + } + - name: time_slice_slo + manifest: |- + { + "description": "My custom time slice SLO", + "name": "Example Time Slice SLO", + "sli_specification": [ + { + "time_slice": [ + { + "comparator": "\u003e", + "query": [ + { + "formula": [ + { + "formula_expression": "query1" + } + ], + "query": [ + { + "metric_query": [ + { + "name": "query1", + "query": "avg:my.custom.count.metric{*}.as_count()" + } + ] + } + ] + } + ], + "threshold": 0.9 + } + ] + } + ], + "tags": [ + "service:myservice", + "team:myteam" + ], + "target_threshold": 99.9, + "thresholds": [ + { + "target": 99.9, + "timeframe": "7d", + "warning": 99.99 + } + ], + "timeframe": "7d", + "type": "time_slice", + "warning_threshold": 99.99 + } + argumentDocs: + comparator: (String) The comparator used to compare the SLI value to the threshold. Valid values are >, >=, <, <=. + data_source: (String) The data source for metrics queries. Defaults to "metrics". + denominator: (String) The sum of the total events. + description: (String) A description of this service level objective. + force_delete: (Boolean) A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards). + formula: '(Block List, Min: 1, Max: 1) A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO. (see below for nested schema)' + formula_expression: (String) The formula string, which is an expression involving named queries. + groups: (Set of String) A static set of groups to filter monitor-based SLOs + id: (String) The ID of this resource. + metric_query: '(Block List, Max: 1) A timeseries formula and functions metrics query. (see below for nested schema)' + monitor_ids: (Set of Number) A static set of monitor IDs to use as part of the SLO + name: (String) Name of Datadog service level objective + numerator: (String) The sum of all the good events. + query: '(Block List, Max: 1) The metric query of good / total events (see below for nested schema)' + sli_specification: '(Block List, Max: 1) A map of SLI specifications to use as part of the SLO. (see below for nested schema)' + tags: '(Set of String) A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it''s not currently possible to filter by these tags when querying via the API' + target: (Number) The objective's target in (0,100). + target_display: (String) A string representation of the target that indicates its precision. It uses trailing zeros to show significant decimal places (e.g. 98.00). + target_threshold: (Number) The objective's target in (0,100). This must match the corresponding thresholds of the primary time frame. + threshold: (Number) The threshold value to which each SLI value will be compared. + thresholds: '(Block List, Min: 1) A list of thresholds and targets that define the service level objectives from the provided SLIs. (see below for nested schema)' + time_slice: '(Block List, Min: 1, Max: 1) The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. (see below for nested schema)' + timeframe: (String) The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are 7d, 30d, 90d, custom. + type: (String) The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are metric, monitor, time_slice. + validate: (Boolean) Whether or not to validate the SLO. + warning: (Number) The objective's warning value in (0,100). This must be greater than the target value. + warning_display: (String) A string representation of the warning target (see the description of the target_display field for details). + warning_threshold: (Number) The objective's warning value in (0,100). This must be greater than the target value and match the corresponding thresholds of the primary time frame. + importStatements: + - |- + # Service Level Objectives can be imported using their string ID, e.g. + terraform import datadog_service_level_objective.baz 12345678901234567890123456789012 + datadog_slo_correction: + subCategory: "" + description: Resource for interacting with the slo_correction API. + name: datadog_slo_correction + title: datadog_slo_correction Resource - terraform-provider-datadog + examples: + - name: example_slo_correction + manifest: |- + { + "category": "Scheduled Maintenance", + "description": "correction example", + "end": 1735718600, + "slo_id": "${datadog_service_level_objective.example_slo.id}", + "start": 1735707000, + "timezone": "UTC" + } + references: + slo_id: datadog_service_level_objective.example_slo.id + dependencies: + datadog_service_level_objective.example_slo: |- + { + "description": "some updated description about example_slo SLO", + "name": "example slo", + "query": [ + { + "denominator": "sum:my.metric{type:good}.as_count() + sum:my.metric{type:bad}.as_count()", + "numerator": "sum:my.metric{type:good}.as_count()" + } + ], + "tags": [ + "foo:bar" + ], + "thresholds": [ + { + "target": 99.5, + "timeframe": "7d", + "warning": 99.8 + } + ], + "type": "metric" + } + - name: example_slo_correction_with_recurrence + manifest: |- + { + "category": "Scheduled Maintenance", + "description": "correction example with recurrence", + "duration": 3600, + "rrule": "FREQ=DAILY;INTERVAL=3;COUNT=3", + "slo_id": "${datadog_service_level_objective.example_slo.id}", + "start": 1735707000, + "timezone": "UTC" + } + references: + slo_id: datadog_service_level_objective.example_slo.id + dependencies: + datadog_service_level_objective.example_slo: |- + { + "description": "some updated description about example_slo SLO", + "name": "example slo", + "query": [ + { + "denominator": "sum:my.metric{type:good}.as_count() + sum:my.metric{type:bad}.as_count()", + "numerator": "sum:my.metric{type:good}.as_count()" + } + ], + "tags": [ + "foo:bar" + ], + "thresholds": [ + { + "target": 99.5, + "timeframe": "7d", + "warning": 99.8 + } + ], + "type": "metric" + } + argumentDocs: + category: (String) Category the SLO correction belongs to. Valid values are Scheduled Maintenance, Outside Business Hours, Deployment, Other. + description: (String) Description of the correction being made. + duration: (Number) Length of time in seconds for a specified rrule recurring SLO correction (required if specifying rrule) + end: (Number) Ending time of the correction in epoch seconds. Required for one time corrections, but optional if rrule is specified + id: (String) The ID of this resource. + rrule: (String) Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are FREQ, INTERVAL, COUNT and UNTIL. + slo_id: (String) ID of the SLO that this correction will be applied to. + start: (Number) Starting time of the correction in epoch seconds. + timezone: (String) The timezone to display in the UI for the correction times (defaults to "UTC") + importStatements: + - terraform import datadog_slo_correction.testing_slo_correction 11111111-3fee-11eb-8a13-77cd9f15119e + datadog_spans_metric: + subCategory: "" + description: Provides a Datadog SpansMetric resource. This can be used to create and manage Datadog spans_metric. + name: datadog_spans_metric + title: datadog_spans_metric Resource - terraform-provider-datadog + examples: + - name: testing_spans_metric + manifest: |- + { + "compute": [ + { + "aggregation_type": "distribution", + "include_percentiles": false, + "path": "@duration" + } + ], + "filter": [ + { + "query": "@http.status_code:200 service:my-service" + } + ], + "group_by": [ + { + "path": "resource_name", + "tag_name": "resource_name" + } + ], + "name": "testing.span.metric" + } + argumentDocs: + aggregation_type: (String) The type of aggregation to use. This field can't be updated after creation. + compute: (Block, Optional) (see below for nested schema) + filter: (Block, Optional) (see below for nested schema) + group_by: (Block Set) (see below for nested schema) + id: (String) The ID of this resource. + include_percentiles: (Boolean) Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the aggregation_type is distribution. + name: (String) The name of the span-based metric. This field can't be updated after creation. + path: (String) The path to the value the span-based metric will aggregate on (only used if the aggregation type is a "distribution"). This field can't be updated after creation. + query: (String) The search query - following the span search syntax. Defaults to "*". + tag_name: (String) Eventual name of the tag that gets created. By default, the path attribute is used as the tag name. + importStatements: + - terraform import datadog_spans_metric.testing_spans_metric testing.span.metric + datadog_synthetics_concurrency_cap: + subCategory: "" + description: Provides a Datadog Synthetics On Demand Concurrency Cap API resource. This can be used to manage the Concurrency Cap for Synthetic tests. + name: datadog_synthetics_concurrency_cap + title: datadog_synthetics_concurrency_cap Resource - terraform-provider-datadog + examples: + - name: this + manifest: |- + { + "on_demand_concurrency_cap": 1 + } + argumentDocs: + id: (String) The ID of this resource. + on_demand_concurrency_cap: (Number) Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. + importStatements: + - |- + # The Synthetics concurrency cap can be imported. can be whatever you specify in your code. Datadog does not store the name on the server. + terraform import datadog_synthetics_concurrency_cap.this + datadog_synthetics_global_variable: + subCategory: "" + description: Provides a Datadog synthetics global variable resource. This can be used to create and manage Datadog synthetics global variables. + name: datadog_synthetics_global_variable + title: datadog_synthetics_global_variable Resource - terraform-provider-datadog + examples: + - name: test_variable + manifest: |- + { + "description": "Description of the variable", + "name": "EXAMPLE_VARIABLE", + "tags": [ + "foo:bar", + "env:test" + ], + "value": "variable-value" + } + argumentDocs: + description: (String) Description of the global variable. + digits: (Number) Number of digits for the OTP. + field: (String) Required when type = http_header. Defines the header to use to extract the value + id: (String) The ID of this resource. + local_variable_name: (String) When type is local_variable, name of the local variable to use to extract the value. + name: (String) Synthetics global variable name. + options: '(Block List, Max: 1) Additional options for the variable, such as a MFA token. (see below for nested schema)' + parse_test_id: (String) Id of the Synthetics test to use for a variable from test. + parse_test_options: '(Block List, Max: 1) ID of the Synthetics test to use a source of the global variable value. (see below for nested schema)' + parser: '(Block List, Max: 1) (see below for nested schema)' + refresh_interval: (Number) Interval for which to refresh the token (in seconds). + restricted_roles: (Set of String) A list of role identifiers to associate with the Synthetics global variable. + secure: (Boolean) If set to true, the value of the global variable is hidden. Defaults to false. + tags: (List of String) A list of tags to associate with your synthetics global variable. + totp_parameters: '(Block List, Max: 1) Parameters needed for MFA/TOTP. (see below for nested schema)' + type: (String) Defines the source to use to extract the value. Valid values are http_body, http_header, local_variable. + value: (String, Sensitive) The value of the global variable. + importStatements: + - |- + # Synthetics global variables can be imported using their string ID, e.g. + terraform import datadog_synthetics_global_variable.fizz abcde123-fghi-456-jkl-mnopqrstuv + datadog_synthetics_private_location: + subCategory: "" + description: Provides a Datadog synthetics private location resource. This can be used to create and manage Datadog synthetics private locations. + name: datadog_synthetics_private_location + title: datadog_synthetics_private_location Resource - terraform-provider-datadog + examples: + - name: private_location + manifest: |- + { + "description": "Description of the private location", + "name": "First private location", + "tags": [ + "foo:bar", + "env:test" + ] + } + argumentDocs: + config: (String, Sensitive) Configuration skeleton for the private location. See installation instructions of the private location on how to use this configuration. + description: (String) Description of the private location. + id: (String) The ID of this resource. + metadata: '(Block List, Max: 1) The private location metadata (see below for nested schema)' + name: (String) Synthetics private location name. + restricted_roles: (Set of String) A list of role identifiers pulled from the Roles API to restrict read and write access. + tags: (List of String) A list of tags to associate with your synthetics private location. + importStatements: + - |- + # Synthetics private locations can be imported using their string ID, e.g. + terraform import datadog_synthetics_private_location.bar pl:private-location-name-abcdef123456 + datadog_synthetics_test: + subCategory: "" + description: Provides a Datadog synthetics test resource. This can be used to create and manage Datadog synthetics test. + name: datadog_synthetics_test + title: Resource datadog_synthetics_test - terraform-provider-datadog + examples: + - name: test_uptime + manifest: |- + { + "assertion": [ + { + "operator": "is", + "target": "200", + "type": "statusCode" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @pagerduty", + "name": "An Uptime test on example.org", + "options_list": [ + { + "monitor_options": [ + { + "renotify_interval": 120 + } + ], + "retry": [ + { + "count": 2, + "interval": 300 + } + ], + "tick_every": 900 + } + ], + "request_definition": [ + { + "method": "GET", + "url": "https://www.example.org" + } + ], + "request_headers": { + "Content-Type": "application/json" + }, + "status": "live", + "subtype": "http", + "tags": [ + "foo:bar", + "foo", + "env:test" + ], + "type": "api" + } + - name: test_api + manifest: |- + { + "assertion": [ + { + "operator": "is", + "target": "200", + "type": "statusCode" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @pagerduty", + "name": "An API test on example.org", + "options_list": [ + { + "monitor_options": [ + { + "renotify_interval": 120 + } + ], + "retry": [ + { + "count": 2, + "interval": 300 + } + ], + "tick_every": 900 + } + ], + "request_definition": [ + { + "method": "GET", + "url": "https://www.example.org" + } + ], + "request_headers": { + "Authentication": "Token: 1234566789", + "Content-Type": "application/json" + }, + "status": "live", + "subtype": "http", + "tags": [ + "foo:bar", + "foo", + "env:test" + ], + "type": "api" + } + - name: test_ssl + manifest: |- + { + "assertion": [ + { + "operator": "isInMoreThan", + "target": 30, + "type": "certificate" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @pagerduty", + "name": "An API test on example.org", + "options_list": [ + { + "accept_self_signed": true, + "tick_every": 900 + } + ], + "request_definition": [ + { + "host": "example.org", + "port": 443 + } + ], + "status": "live", + "subtype": "ssl", + "tags": [ + "foo:bar", + "foo", + "env:test" + ], + "type": "api" + } + - name: test_tcp + manifest: |- + { + "assertion": [ + { + "operator": "lessThan", + "target": 2000, + "type": "responseTime" + } + ], + "config_variable": [ + { + "id": "76636cd1-82e2-4aeb-9cfe-51366a8198a2", + "name": "MY_GLOBAL_VAR", + "type": "global" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @pagerduty", + "name": "An API test on example.org", + "options_list": [ + { + "tick_every": 900 + } + ], + "request_definition": [ + { + "host": "example.org", + "port": 443 + } + ], + "status": "live", + "subtype": "tcp", + "tags": [ + "foo:bar", + "foo", + "env:test" + ], + "type": "api" + } + - name: test_dns + manifest: |- + { + "assertion": [ + { + "operator": "is", + "property": "A", + "target": "0.0.0.0", + "type": "recordSome" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @pagerduty", + "name": "An API test on example.org", + "options_list": [ + { + "tick_every": 900 + } + ], + "request_definition": [ + { + "host": "example.org" + } + ], + "status": "live", + "subtype": "dns", + "tags": [ + "foo:bar", + "foo", + "env:test" + ], + "type": "api" + } + - name: test_multi_step + manifest: |- + { + "api_step": [ + { + "assertion": [ + { + "operator": "is", + "target": "200", + "type": "statusCode" + } + ], + "name": "An API test on example.org", + "request_definition": [ + { + "method": "GET", + "url": "https://example.org" + } + ], + "request_headers": { + "Authentication": "Token: 1234566789", + "Content-Type": "application/json" + }, + "subtype": "http" + }, + { + "assertion": [ + { + "operator": "is", + "target": "200", + "type": "statusCode" + } + ], + "name": "An API test on example.org", + "request_definition": [ + { + "method": "GET", + "url": "http://example.org" + } + ], + "subtype": "http" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "name": "Multistep API test", + "options_list": [ + { + "accept_self_signed": true, + "tick_every": 900 + } + ], + "status": "live", + "subtype": "multi", + "tags": [ + "foo:bar", + "foo", + "env:test" + ], + "type": "api" + } + - name: test_browser + manifest: |- + { + "browser_step": [ + { + "name": "Check current url", + "params": [ + { + "check": "contains", + "value": "datadoghq" + } + ], + "type": "assertCurrentUrl" + }, + { + "name": "Test a downloaded file", + "params": [ + { + "file": "${jsonencode(\n {\n md5 = \"abcdef1234567890\" // MD5 hash of the file\n sizeCheck = {\n type = \"equals\" // \"equals\", \"greater\", \"greaterEquals\", \"lower\", \n // \"lowerEquals\", \"notEquals\", \"between\"\n value = 1\n // min = 1 // only used for \"between\"\n // max = 1 // only used for \"between\"\n }\n nameCheck = {\n type = \"contains\" // \"contains\", \"equals\", \"isEmpty\", \"matchRegex\", \n // \"notContains\", \"notIsEmpty\", \"notEquals\", \n // \"notStartsWith\", \"startsWith\"\n value = \".xls\"\n }\n }\n )}" + } + ], + "type": "assertFileDownload" + } + ], + "browser_variable": [ + { + "example": "597", + "name": "MY_PATTERN_VAR", + "pattern": "{{numeric(3)}}", + "type": "text" + }, + { + "example": "jd8-afe-ydv.4546132139@synthetics.dtdg.co", + "name": "MY_EMAIL_VAR", + "pattern": "jd8-afe-ydv.{{ numeric(10) }}@synthetics.dtdg.co", + "type": "email" + }, + { + "id": "76636cd1-82e2-4aeb-9cfe-51366a8198a2", + "name": "MY_GLOBAL_VAR", + "type": "global" + } + ], + "device_ids": [ + "laptop_large" + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @qa", + "name": "A Browser test on example.org", + "options_list": [ + { + "tick_every": 3600 + } + ], + "request_definition": [ + { + "method": "GET", + "url": "https://app.datadoghq.com" + } + ], + "status": "paused", + "tags": [], + "type": "browser" + } + - name: grpc + manifest: |- + { + "assertion": [ + { + "operator": "lessThan", + "target": "2000", + "type": "responseTime" + }, + { + "operator": "is", + "target": 1, + "type": "grpcHealthcheckStatus" + }, + { + "operator": "is", + "target": "proto target", + "type": "grpcProto" + }, + { + "operator": "is", + "property": "property", + "target": "123", + "type": "grpcMetadata" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @datadog.user", + "name": "GRPC API test", + "options_list": [ + { + "tick_every": 60 + } + ], + "request_definition": [ { - "host": "${element(aws_instance.cluster.*.public_ip, 0)}" + "host": "google.com", + "method": "GET", + "plain_proto_file": "syntax = \"proto3\";\noption java_multiple_files = true;\noption java_package = \"io.grpc.examples.helloworld\";\noption java_outer_classname = \"HelloWorldProto\";\noption objc_class_prefix = \"HLW\";\npackage helloworld;\n// The greeting service definition.\nservice Greeter {\n\t// Sends a greeting\n\trpc SayHello (HelloRequest) returns (HelloReply) {}\n}\n// The request message containing the user's name.\nmessage HelloRequest {\n\tstring name = 1;\n}\n// The response message containing the greetings\nmessage HelloReply {\n\tstring message = 1;\n}\n", + "port": 50050, + "service": "Hello" } ], - "provisioner": { - "remote-exec": [ - { - "inline": [ - "bootstrap-cluster.sh ${join(\" \", aws_instance.cluster.*.private_ip)}" - ] - } - ] + "request_metadata": { + "header": "value" }, - "triggers": { - "cluster_instance_ids": "${join(\",\", aws_instance.cluster.*.id)}" - } + "status": "paused", + "subtype": "grpc", + "tags": [ + "foo:bar", + "baz" + ], + "type": "api" + } + argumentDocs: + accept_self_signed: (Boolean) For SSL test, whether or not the test should allow self signed certificates. + access_key: (String, Sensitive) Access key for SIGV4 authentication. + access_token_url: (String) Access token url for oauth-client or oauth-rop authentication. + allow_failure: (Boolean) Determines whether or not to continue with test if this step fails. + allow_insecure: (Boolean) Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. + api_step: (Block List) Steps for multistep api tests (see below for nested schema) + application_id: (String) RUM application ID used to collect RUM data for the browser test. + assertion: (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) + attribute: (String) Name of the attribute to use for an "assert attribute" step. + audience: (String) Audience for oauth-client or oauth-rop authentication. Defaults to "". + body: (String) The request body. + body_type: (String) Type of the request body. Valid values are text/plain, application/json, text/xml, text/html, application/x-www-form-urlencoded, graphql. + browser_step: (Block List) Steps for browser tests. (see below for nested schema) + browser_variable: (Block List) Variables used for a browser test steps. Multiple variable blocks are allowed with the structure below. (see below for nested schema) + call_type: (String) The type of gRPC call to perform. Valid values are healthcheck, unary. + cert: '(Block List, Min: 1, Max: 1) (see below for nested schema)' + certificate_domains: (List of String) By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in certificate_domains. + check: (String) Check type to use for an assertion step. Valid values are equals, notEquals, contains, notContains, startsWith, notStartsWith, greater, lower, greaterEquals, lowerEquals, matchRegex, between, isEmpty, notIsEmpty. + check_certificate_revocation: (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + ci: '(Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema)' + click_type: (String) Type of click to use for a "click" step. + client_id: (String) Client ID for oauth-client or oauth-rop authentication. + client_secret: (String, Sensitive) Client secret for oauth-client or oauth-rop authentication. + client_token_id: (Number, Sensitive) RUM application API key ID used to collect RUM data for the browser test. + code: (String) Javascript code to use for the step. + config_variable: (Block List) Variables used for the test configuration. Multiple config_variable blocks are allowed with the structure below. (see below for nested schema) + content: (String, Sensitive) Content of the certificate. + count: (Number) Number of retries needed to consider a location as failed before sending a notification alert. Defaults to 0. + day: (Number) Number representing the day of the week + delay: (Number) Delay between each key stroke for a "type test" step. + device_ids: (List of String) Required if type = "browser". Array with the different device IDs used to run the test. Valid values are laptop_large, tablet, mobile_small, chrome.laptop_large, chrome.tablet, chrome.mobile_small, firefox.laptop_large, firefox.tablet, firefox.mobile_small, edge.laptop_large, edge.tablet, edge.mobile_small. + disable_cors: (Boolean) Disable Cross-Origin Resource Sharing for browser tests. + disable_csp: (Boolean) Disable Content Security Policy for browser tests. + dns_server: (String) DNS server to use for DNS tests (subtype = "dns"). + dns_server_port: (Number) DNS server port to use for DNS tests. + domain: (String) Domain for ntlm authentication. + element: (String) Element to use for the step, json encoded string. + element_user_locator: '(Block List, Max: 1) Custom user selector to use for the step. (see below for nested schema)' + email: (String) Details of the email for an "assert email" step. + example: (String) Example of the extracted variable. Defaults to "". + execution_rule: (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + extracted_value: (Block List) Values to parse and save as variables from the response. (see below for nested schema) + fail_test_on_cannot_locate: (Boolean) Defaults to false. + field: (String) When type is http_header, name of the header to use to extract the value. + file: (String) JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. + filename: (String) File name for the certificate. Defaults to "Provided in Terraform config". + files: (String) Details of the files for an "upload files" step, json encoded string. + follow_redirects: (Boolean) Determines whether or not the API HTTP test should follow redirects. + force_element_update: (Boolean) Force update of the "element" parameter for the step + from: (String) The hour of the day on which scheduling starts. + headers: (Map of String) Header name and value map. + host: (String) Host name to perform the test with. + http_version: (String) HTTP version to use for a Synthetics API test. Valid values are http1, http2, any. + id: (String) The ID of this resource. + ignore_server_certificate_error: (Boolean) Ignore server certificate error for browser tests. + initial_navigation_timeout: (Number) Timeout before declaring the initial step as failed (in seconds) for browser tests. + interval: (Number) Interval between a failed test and the next retry in milliseconds. Defaults to 300. + is_critical: (Boolean) Determines whether or not to consider the entire test as failed if this step fails. Can be used only if allow_failure is true. + is_enabled: (Boolean) Determines whether RUM data is collected during test runs. + jsonpath: (String) The JSON path to assert. + key: '(Block List, Min: 1, Max: 1) (see below for nested schema)' + locations: (Set of String) Array of locations used to run the test. Refer to the Datadog Synthetics location data source to retrieve the list of locations. + message: (String) A message to include with notifications for this synthetics test. Email notifications can be sent to specific users by using the same @username notation as events. Defaults to "". + method: (String) Either the HTTP method/verb to use or a gRPC method available on the service set in the service field. Required if subtype is HTTP or if subtype is grpc and callType is unary. + min_failure_duration: (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + min_location_failed: (Number) Minimum number of locations in failure required to trigger an alert. Defaults to 1. + modifiers: (List of String) Modifier to use for a "press key" step. + monitor_id: (Number) ID of the monitor associated with the Datadog synthetics test. + monitor_name: (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + monitor_options: '(Block List, Max: 1) (see below for nested schema)' + monitor_priority: (Number) + name: (String) Name of Datadog synthetics test. + no_saving_response_body: (Boolean) Determines whether or not to save the response body. + no_screenshot: (Boolean) Prevents saving screenshots of the step. + number_of_packets: (Number) Number of pings to use per test for ICMP tests (subtype = "icmp") between 0 and 10. + operator: (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + options_list: '(Block List, Max: 1) (see below for nested schema)' + params: '(Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema)' + parser: '(Block List, Min: 1, Max: 1) (see below for nested schema)' + password: (String, Sensitive) Password for authentication. + pattern: (String) Pattern of the variable. Defaults to "". + persist_cookies: (Boolean) Persist cookies across redirects. + plain_proto_file: (String) The content of a proto file as a string. + playing_tab_id: (String) ID of the tab to play the subtest. + port: (Number) Port to use when performing the test. + property: (String) If assertion type is header, this is the header name. + proto_json_descriptor: (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. + region: (String) Region for SIGV4 authentication. + renotify_interval: (Number) Specify a renotification frequency in minutes. Values available by default are 0, 10, 20, 30, 40, 50, 60, 90, 120, 180, 240, 300, 360, 720, 1440. Defaults to 0. + request: (String) Request for an API step. + request_basicauth: '(Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema)' + request_client_certificate: '(Block List, Max: 1) Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. (see below for nested schema)' + request_definition: '(Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema)' + request_headers: (Map of String) Header name and value map. + request_metadata: (Map of String) Metadata to include when performing the gRPC test. + request_proxy: '(Block List, Max: 1) The proxy to perform the test. (see below for nested schema)' + request_query: (Map of String) Query arguments name and value map. + resource: (String) Resource for oauth-client or oauth-rop authentication. Defaults to "". + restricted_roles: (Set of String) A list of role identifiers pulled from the Roles API to restrict read and write access. + retry: '(Block List, Max: 1) (see below for nested schema)' + rum_settings: '(Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema)' + scheduling: '(Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema)' + scope: (String) Scope for oauth-client or oauth-rop authentication. Defaults to "". + secret_key: (String, Sensitive) Secret key for SIGV4 authentication. + secure: (Boolean) Determines whether or not the extracted value will be obfuscated. + servername: (String) For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number. + service: (String) The gRPC service on which you want to perform the gRPC call. + service_name: (String) Service name for SIGV4 authentication. + session_token: (String) Session token for SIGV4 authentication. + set_cookie: (String) Cookies to be used for a browser test request, using the Set-Cookie syntax. + should_track_hops: (Boolean) This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (subtype = "icmp"). + status: (String) Define whether you want to start (live) or pause (paused) a Synthetic test. Valid values are live, paused. + subtest_public_id: (String) ID of the Synthetics test to use as subtest. + subtype: (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. + tags: (List of String) A list of tags to associate with your synthetics test. This can help you categorize and filter tests in the manage synthetics page of the UI. Default is an empty list ([]). + target: (String) Expected value. Depends on the assertion type, refer to Datadog documentation for details. + targetjsonpath: '(Block List, Max: 1) Expected structure if operator is validatesJSONPath. Exactly one nested block is allowed with the structure below. (see below for nested schema)' + targetvalue: (String) Expected matching value. + targetxpath: '(Block List, Max: 1) Expected structure if operator is validatesXPath. Exactly one nested block is allowed with the structure below. (see below for nested schema)' + tick_every: (Number) How often the test should run (in seconds). + timeframes: '(Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema)' + timeout: (Number) Timeout in seconds for the test. Defaults to 60. + timezone: (String) Timezone in which the timeframe is based. + timings_scope: (String) Timings scope for response time assertions. Valid values are all, withoutDNS. + to: (String) The hour of the day on which scheduling ends. + token_api_authentication: (String) Token API Authentication for oauth-client or oauth-rop authentication. Valid values are header, body. + type: (String) Synthetics test type. Valid values are api, browser. + url: (String) The URL to send the request to. + username: (String) Username for authentication. + value: (String) Regex or JSON path used for the parser. Not used with type raw. + variable: '(Block List, Max: 1) Details of the variable to extract. (see below for nested schema)' + with_click: (Boolean) For "file upload" steps. + workstation: (String) Workstation for ntlm authentication. + x: (Number) X coordinates for a "scroll step". + xpath: (String) The xpath to assert. + "y": (Number) Y coordinates for a "scroll step". + importStatements: + - |- + # Synthetics tests can be imported using their public string ID, e.g. + terraform import datadog_synthetics_test.fizz abc-123-xyz + datadog_team: + subCategory: "" + description: Provides a Datadog Team resource. This can be used to create and manage Datadog team. + name: datadog_team + title: datadog_team Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "description": "Team description", + "handle": "example-team", + "name": "Example Team" + } + argumentDocs: + description: (String) Free-form markdown description/content for the team's homepage. + handle: (String) The team's identifier + id: (String) The ID of this resource. + link_count: (Number) The number of links belonging to the team. + name: (String) The name of the team. + summary: (String) A brief summary of the team, derived from the description. + user_count: (Number) The number of users belonging to the team. + importStatements: + - terraform import datadog_team.foo "bf064c56-edb0-11ed-ae91-da7ad0900002" + datadog_team_link: + subCategory: "" + description: Provides a Datadog TeamLink resource. This can be used to create and manage Datadog team_link. + name: datadog_team_link + title: datadog_team_link Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "label": "Link label", + "position": "Example link", + "team_id": "${datadog_team.foo.id}", + "url": "https://example.com" + } + references: + team_id: datadog_team.foo.id + dependencies: + datadog_team.foo: |- + { + "description": "Example team", + "handle": "example-team-updated", + "name": "Example Team-updated" + } + argumentDocs: + id: (String) The ID of this resource. + label: (String) The link's label. + position: (Number) The link's position, used to sort links for the team. + team_id: (String) ID of the team the link is associated with. + url: (String) The URL for the link. + importStatements: + - terraform import datadog_team_link.new_list "${team_id}:${resource_id}" + datadog_team_membership: + subCategory: "" + description: Provides a Datadog TeamMembership resource. This can be used to create and manage Datadog team_membership. + name: datadog_team_membership + title: datadog_team_membership Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "role": "admin", + "team_id": "${datadog_team.foo.id}", + "user_id": "${datadog_user.foo.id}" + } + references: + team_id: datadog_team.foo.id + user_id: datadog_user.foo.id + dependencies: + datadog_team.foo: |- + { + "description": "Example team", + "handle": "example-team-updated", + "name": "Example Team-updated" + } + datadog_user.foo: |- + { + "email": "new@example.com" + } + argumentDocs: + id: (String) The ID of this resource. + role: (String) The user's role within the team. Valid values are admin. + team_id: (String) ID of the team the team membership is associated with. + user_id: (String) The ID of the user. + importStatements: + - |- + # This resource is imported using team_id and user_id seperated by `:`. + + terraform import datadog_team_membership.foo "${team_id}:${user_id}" + datadog_team_permission_setting: + subCategory: "" + description: Provides a Datadog TeamPermissionSetting resource. This can be used to manage Datadog teampermissionsetting. + name: datadog_team_permission_setting + title: datadog_team_permission_setting Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "action": "manage_membership", + "team_id": "${datadog_team.foo.id}", + "value": "organization" } + references: + team_id: datadog_team.foo.id dependencies: - aws_instance.cluster: |- + datadog_team.foo: |- { - "count": 3 + "description": "Example team", + "handle": "example-team-updated", + "name": "Example Team-updated" } - argumentDocs: {} + argumentDocs: + action: (String) The identifier for the action. Valid values are manage_membership, edit. + id: (String) The ID of this resource. + team_id: (String) ID of the team the team permission setting is associated with. + value: (String) The action value. Valid values are admins, members, organization, user_access_manage, teams_manage. importStatements: [] + datadog_user: + subCategory: "" + description: Provides a Datadog user resource. This can be used to create and manage Datadog users. + name: datadog_user + title: datadog_user Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "email": "new@example.com", + "roles": [ + "${data.datadog_role.ro_role.id}" + ] + } + argumentDocs: + disabled: (Boolean) Whether the user is disabled. Defaults to false. + email: (String) Email address for user. + id: (String) The ID of this resource. + name: (String) Name for user. + roles: (Set of String) A list a role IDs to assign to the user. + send_user_invitation: (Boolean) Whether an invitation email should be sent when the user is created. Defaults to true. + user_invitation_id: (String) The ID of the user invitation that was sent when creating the user. + verified: (Boolean) Returns true if the user is verified. + importStatements: + - terraform import datadog_user.example_user 6f1b44c0-30b2-11eb-86bc-279f7c1ebaa4 + datadog_webhook: + subCategory: "" + description: Provides a Datadog webhook resource. This can be used to create and manage Datadog webhooks. + name: datadog_webhook + title: datadog_webhook Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "custom_headers": "${jsonencode({ \"custom\" : \"header\" })}", + "encode_as": "json", + "name": "test-webhook", + "payload": "${jsonencode({ \"custom\" : \"payload\" })}", + "url": "example.com" + } + argumentDocs: + custom_headers: (String) The headers attached to the webhook. + encode_as: (String) Encoding type. Valid values are json, form. + id: (String) The ID of this resource. + name: (String) The name of the webhook. It corresponds with . + payload: (String) The payload of the webhook. + url: (String) The URL of the webhook. + importStatements: + - terraform import datadog_webhook.foo example-webhook + datadog_webhook_custom_variable: + subCategory: "" + description: Provides a Datadog webhooks custom variable resource. This can be used to create and manage Datadog webhooks custom variables. + name: datadog_webhook_custom_variable + title: datadog_webhook_custom_variable Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "is_secret": true, + "name": "EXAMPLE_VARIABLE", + "value": "EXAMPLE-VALUE" + } + argumentDocs: + id: (String) The ID of this resource. + is_secret: (Boolean) Whether the custom variable is secret or not. + name: (String) The name of the variable. It corresponds with . + value: (String, Sensitive) The value of the custom variable. + importStatements: + - terraform import datadog_webhook_custom_variable.foo EXAMPLE_VARIABLE diff --git a/config/provider.go b/config/provider.go index 7f53564..011e189 100644 --- a/config/provider.go +++ b/config/provider.go @@ -9,13 +9,37 @@ import ( _ "embed" ujconfig "github.com/crossplane/upjet/pkg/config" - - "github.com/upbound/upjet-provider-template/config/null" + "github.com/upbound/provider-datadog/config/api" + "github.com/upbound/provider-datadog/config/apm" + "github.com/upbound/provider-datadog/config/application" + "github.com/upbound/provider-datadog/config/authn" + "github.com/upbound/provider-datadog/config/child" + "github.com/upbound/provider-datadog/config/cloud" + "github.com/upbound/provider-datadog/config/dashboard" + "github.com/upbound/provider-datadog/config/downtime" + "github.com/upbound/provider-datadog/config/integration" + "github.com/upbound/provider-datadog/config/ip" + "github.com/upbound/provider-datadog/config/logs" + "github.com/upbound/provider-datadog/config/metric" + "github.com/upbound/provider-datadog/config/monitor" + "github.com/upbound/provider-datadog/config/organization" + "github.com/upbound/provider-datadog/config/powerpack" + "github.com/upbound/provider-datadog/config/restriction" + "github.com/upbound/provider-datadog/config/role" + "github.com/upbound/provider-datadog/config/rum" + "github.com/upbound/provider-datadog/config/securitymonitoring" + "github.com/upbound/provider-datadog/config/sensitivedatascanner" + "github.com/upbound/provider-datadog/config/service" + "github.com/upbound/provider-datadog/config/spans" + "github.com/upbound/provider-datadog/config/synthetics" + "github.com/upbound/provider-datadog/config/team" + "github.com/upbound/provider-datadog/config/user" + "github.com/upbound/provider-datadog/config/webhook" ) const ( - resourcePrefix = "template" - modulePath = "github.com/upbound/upjet-provider-template" + resourcePrefix = "datadog" + modulePath = "github.com/upbound/provider-datadog" ) //go:embed schema.json @@ -27,7 +51,7 @@ var providerMetadata string // GetProvider returns provider configuration func GetProvider() *ujconfig.Provider { pc := ujconfig.NewProvider([]byte(providerSchema), resourcePrefix, modulePath, []byte(providerMetadata), - ujconfig.WithRootGroup("template.upbound.io"), + ujconfig.WithRootGroup("upbound.io"), ujconfig.WithIncludeList(ExternalNameConfigured()), ujconfig.WithFeaturesPackage("internal/features"), ujconfig.WithDefaultResourceOptions( @@ -36,7 +60,32 @@ func GetProvider() *ujconfig.Provider { for _, configure := range []func(provider *ujconfig.Provider){ // add custom config functions - null.Configure, + api.Configure, + apm.Configure, + application.Configure, + authn.Configure, + child.Configure, + cloud.Configure, + dashboard.Configure, + downtime.Configure, + integration.Configure, + ip.Configure, + logs.Configure, + metric.Configure, + monitor.Configure, + organization.Configure, + powerpack.Configure, + restriction.Configure, + role.Configure, + rum.Configure, + securitymonitoring.Configure, + sensitivedatascanner.Configure, + service.Configure, + spans.Configure, + synthetics.Configure, + team.Configure, + user.Configure, + webhook.Configure, } { configure(pc) } diff --git a/config/restriction/config.go b/config/restriction/config.go new file mode 100644 index 0000000..df2dd05 --- /dev/null +++ b/config/restriction/config.go @@ -0,0 +1,13 @@ +package restriction + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_restriction_policy", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "RestrictionPolicy" + r.ShortGroup = "datadog" + }) +} diff --git a/config/role/config.go b/config/role/config.go new file mode 100644 index 0000000..9d18b72 --- /dev/null +++ b/config/role/config.go @@ -0,0 +1,13 @@ +package role + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_role", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "Role" + r.ShortGroup = "datadog" + }) +} diff --git a/config/rum/config.go b/config/rum/config.go new file mode 100644 index 0000000..3ec6017 --- /dev/null +++ b/config/rum/config.go @@ -0,0 +1,13 @@ +package rum + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_rum_application", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "RUMApplication" + r.ShortGroup = "datadog" + }) +} diff --git a/config/schema-dense.json b/config/schema-dense.json new file mode 100644 index 0000000..c6f984a --- /dev/null +++ b/config/schema-dense.json @@ -0,0 +1 @@ +{"format_version":"1.0","provider_schemas":{"registry.terraform.io/datadog/datadog":{"provider":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"(Required unless validate is false) Datadog API key. This can also be set via the DD_API_KEY environment variable.","description_kind":"plain","optional":true,"sensitive":true},"api_url":{"type":"string","description":"The API URL. This can also be set via the DD_HOST environment variable. Note that this URL must not end with the `/api/` path. For example, `https://api.datadoghq.com/` is a correct value, while `https://api.datadoghq.com/api/` is not. And if you're working with \"EU\" version of Datadog, use `https://api.datadoghq.eu/`. Other Datadog region examples: `https://api.us5.datadoghq.com/`, `https://api.us3.datadoghq.com/` and `https://api.ddog-gov.com/`. See https://docs.datadoghq.com/getting_started/site/ for all available regions.","description_kind":"plain","optional":true},"app_key":{"type":"string","description":"(Required unless validate is false) Datadog APP key. This can also be set via the DD_APP_KEY environment variable.","description_kind":"plain","optional":true,"sensitive":true},"http_client_retry_backoff_base":{"type":"number","description":"The HTTP request retry back off base. Defaults to 2.","description_kind":"plain","optional":true},"http_client_retry_backoff_multiplier":{"type":"number","description":"The HTTP request retry back off multiplier. Defaults to 2.","description_kind":"plain","optional":true},"http_client_retry_enabled":{"type":"string","description":"Enables request retries on HTTP status codes 429 and 5xx. Valid values are [`true`, `false`]. Defaults to `true`.","description_kind":"plain","optional":true},"http_client_retry_max_retries":{"type":"number","description":"The HTTP request maximum retry number. Defaults to 3.","description_kind":"plain","optional":true},"http_client_retry_timeout":{"type":"number","description":"The HTTP request retry timeout period. Defaults to 60 seconds.","description_kind":"plain","optional":true},"validate":{"type":"string","description":"Enables validation of the provided API key during provider initialization. Valid values are [`true`, `false`]. Default is true. When false, api_key won't be checked.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"datadog_api_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"key":{"type":"string","description":"The value of the API Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for API Key.","description_kind":"plain","required":true}},"description":"Provides a Datadog API Key resource. This can be used to create and manage Datadog API Keys.","description_kind":"plain"}},"datadog_apm_retention_filter":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"the status of the retention filter.","description_kind":"plain","required":true},"filter_type":{"type":"string","description":"The type of the retention filter, currently only spans-processing-sampling is available. Valid values are `spans-sampling-processor`.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the retention filter.","description_kind":"plain","required":true},"rate":{"type":"string","description":"Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query.","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"single","block":{"attributes":{"query":{"type":"string","description":"The search query - following the span search syntax. Defaults to `\"*\"`.","description_kind":"plain","optional":true,"computed":true}},"description":"The spans filter. Spans matching this filter will be indexed and stored.","description_kind":"plain"}}},"description":"The object describing the configuration of the retention filter to create/update.","description_kind":"plain"}},"datadog_apm_retention_filter_order":{"version":0,"block":{"attributes":{"filter_ids":{"type":["list","string"],"description":"The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog [APM Retention Filters API](https://docs.datadoghq.com/api/v2/apm-retention-filters/) resource, which is used to manage Datadog APM retention filters order.","description_kind":"plain"}},"datadog_application_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"key":{"type":"string","description":"The value of the Application Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for Application Key.","description_kind":"plain","required":true}},"description":"Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys.","description_kind":"plain"}},"datadog_authn_mapping":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description":"Identity provider key.","description_kind":"plain","required":true},"role":{"type":"string","description":"The ID of a role to attach to all users with the corresponding key and value.","description_kind":"plain","required":true},"value":{"type":"string","description":"Identity provider value.","description_kind":"plain","required":true}},"description":"Provides a Datadog AuthN Mappings resource. This feature lets you automatically assign roles to users based on their SAML attributes.","description_kind":"plain"}},"datadog_child_organization":{"version":0,"block":{"attributes":{"api_key":{"type":["list",["object",{"key":"string","name":"string"}]],"description":"Datadog API key.","description_kind":"plain","computed":true},"application_key":{"type":["list",["object",{"hash":"string","name":"string","owner":"string"}]],"description":"An application key with its associated metadata.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the organization.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name for Child Organization after creation.","description_kind":"plain","required":true},"public_id":{"type":"string","description":"The `public_id` of the organization you are operating within.","description_kind":"plain","computed":true},"settings":{"type":["list",["object",{"private_widget_share":"bool","saml":["list",["object",{"enabled":"bool"}]],"saml_autocreate_access_role":"string","saml_autocreate_users_domains":["list",["object",{"domains":["list","string"],"enabled":"bool"}]],"saml_can_be_enabled":"bool","saml_idp_endpoint":"string","saml_idp_initiated_login":["list",["object",{"enabled":"bool"}]],"saml_idp_metadata_uploaded":"bool","saml_login_url":"string","saml_strict_mode":["list",["object",{"enabled":"bool"}]]}]],"description":"Organization settings","description_kind":"plain","computed":true},"user":{"type":["list",["object",{"access_role":"string","email":"string","name":"string"}]],"description":"Information about a user","description_kind":"plain","computed":true}},"description":"Provides a Datadog Child Organization resource. This can be used to create Datadog Child Organizations. To manage created organization use `datadog_organization_settings`.","description_kind":"plain"}},"datadog_cloud_configuration_rule":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Whether the cloud configuration rule is enabled.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Fields to group by when generating signals, e.g. @resource. Defaults to empty list.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"The message associated to the rule that will be shown in findings and signals.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the cloud configuration rule.","description_kind":"plain","required":true},"notifications":{"type":["list","string"],"description":"Notification targets for signals. Defaults to empty list.","description_kind":"plain","optional":true},"policy":{"type":"string","description":"Policy written in Rego format.","description_kind":"plain","required":true},"related_resource_types":{"type":["list","string"],"description":"Related resource types to be checked by the rule. Defaults to empty list.","description_kind":"plain","optional":true},"resource_type":{"type":"string","description":"Main resource type to be checked by the rule.","description_kind":"plain","required":true},"severity":{"type":"string","description":"Severity of the rule and associated signals. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"Tags of the rule, propagated to findings and signals. Defaults to empty list.","description_kind":"plain","optional":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description":"The type of filtering action. Valid values are `require`, `suppress`.","description_kind":"plain","required":true},"query":{"type":"string","description":"Query for selecting logs to apply the filtering action.","description_kind":"plain","required":true}},"description":"Additional queries to filter matched events before they are processed. Defaults to empty list","description_kind":"plain"}}},"description":"Provides a Datadog Cloud Configuration Rule resource.","description_kind":"plain"}},"datadog_cloud_workload_security_agent_rule":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"The description of the Agent rule. Defaults to `\"\"`.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Whether the Agent rule is enabled. Defaults to `true`.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The SECL expression of the Agent rule.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the Agent rule.","description_kind":"plain","required":true}},"description":"Provides a Datadog Cloud Workload Security Agent Rule API resource for agent rules.","description_kind":"plain"}},"datadog_dashboard":{"version":0,"block":{"attributes":{"dashboard_lists":{"type":["set","number"],"description":"A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior.","description_kind":"plain","optional":true},"dashboard_lists_removed":{"type":["set","number"],"description":"A list of dashboard lists this dashboard should be removed from. Internal only.","description_kind":"plain","computed":true},"description":{"type":"string","description":"The description of the dashboard.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_read_only":{"type":"bool","description":"Whether this dashboard is read-only. **Deprecated.** Prefer using `restricted_roles` to define which roles are required to edit the dashboard. Defaults to `false`.","description_kind":"plain","deprecated":true,"optional":true},"layout_type":{"type":"string","description":"The layout type of the dashboard. Valid values are `ordered`, `free`.","description_kind":"plain","required":true},"notify_list":{"type":["set","string"],"description":"The list of handles for the users to notify when changes are made to this dashboard.","description_kind":"plain","optional":true},"reflow_type":{"type":"string","description":"The reflow type of a new dashboard layout. Set this only when layout type is `ordered`. If set to `fixed`, the dashboard expects all widgets to have a layout, and if it's set to `auto`, widgets should not have layouts. Valid values are `auto`, `fixed`.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"UUIDs of roles whose associated users are authorized to edit the dashboard.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags assigned to the Dashboard. Only team names of the form `team:\u003cname\u003e` are supported.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the dashboard.","description_kind":"plain","required":true},"url":{"type":"string","description":"The URL of the dashboard.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"template_variable":{"nesting_mode":"list","block":{"attributes":{"available_values":{"type":["list","string"],"description":"The list of values that the template variable drop-down is be limited to","description_kind":"plain","optional":true},"default":{"type":"string","description":"The default value for the template variable on dashboard load. Cannot be used in conjunction with `defaults`. **Deprecated.** Use `defaults` instead.","description_kind":"plain","deprecated":true,"optional":true},"defaults":{"type":["list","string"],"description":"One or many default values for template variables on load. If more than one default is specified, they will be unioned together with `OR`. Cannot be used in conjunction with `default`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true}},"description":"The list of template variables for this dashboard.","description_kind":"plain"}},"template_variable_preset":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the preset.","description_kind":"plain","optional":true}},"block_types":{"template_variable":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the template variable","description_kind":"plain","optional":true},"value":{"type":"string","description":"The value that should be assumed by the template variable in this preset. Cannot be used in conjunction with `values`. **Deprecated.** Use `values` instead.","description_kind":"plain","deprecated":true,"optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified. Cannot be used in conjunction with `value`.","description_kind":"plain","optional":true}},"description":"The template variable names and assumed values under the given preset","description_kind":"plain"}}},"description":"The list of selectable template variable presets for this dashboard.","description_kind":"plain"}},"widget":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"number","description":"The ID of the widget.","description_kind":"plain","computed":true}},"block_types":{"alert_graph_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"viz_type":{"type":"string","description":"Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.","description_kind":"plain","required":true}},"description":"The definition for a Alert Graph widget.","description_kind":"plain"},"max_items":1},"alert_value_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"precision":{"type":"number","description":"The precision to use when displaying the value. Use `*` for maximum precision.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true}},"description":"The definition for a Alert Value widget.","description_kind":"plain"},"max_items":1},"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"check_status_definition":{"nesting_mode":"list","block":{"attributes":{"check":{"type":"string","description":"The check to use in the widget.","description_kind":"plain","required":true},"group":{"type":"string","description":"The check group to use in the widget.","description_kind":"plain","optional":true},"group_by":{"type":["list","string"],"description":"When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.","description_kind":"plain","optional":true},"grouping":{"type":"string","description":"The kind of grouping to use. Valid values are `check`, `cluster`.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to use in the widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Check Status widget.","description_kind":"plain"},"max_items":1},"distribution_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Distribution widget.","description_kind":"plain"},"max_items":1},"event_stream_definition":{"nesting_mode":"list","block":{"attributes":{"event_size":{"type":"string","description":"The size to use to display an event. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Stream widget.","description_kind":"plain"},"max_items":1},"event_timeline_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Timeline widget.","description_kind":"plain"},"max_items":1},"free_text_definition":{"nesting_mode":"list","block":{"attributes":{"color":{"type":"string","description":"The color of the text in the widget.","description_kind":"plain","optional":true},"font_size":{"type":"string","description":"The size of the text in the widget.","description_kind":"plain","optional":true},"text":{"type":"string","description":"The text to display in the widget.","description_kind":"plain","required":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true}},"description":"The definition for a Free Text widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"group_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the group title, options: `vivid_blue`, `vivid_purple`, `vivid_pink`, `vivid_orange`, `vivid_yellow`, `vivid_green`, `blue`, `purple`, `pink`, `orange`, `yellow`, `green`, `gray` or `white`","description_kind":"plain","optional":true},"banner_img":{"type":"string","description":"The image URL to display as a banner for the group.","description_kind":"plain","optional":true},"layout_type":{"type":"string","description":"The layout type of the group. Valid values are `ordered`.","description_kind":"plain","required":true},"show_title":{"type":"bool","description":"Whether to show the title or not. Defaults to `true`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the group.","description_kind":"plain","optional":true}},"block_types":{"widget":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"number","description":"The ID of the widget.","description_kind":"plain","computed":true}},"block_types":{"alert_graph_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"viz_type":{"type":"string","description":"Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.","description_kind":"plain","required":true}},"description":"The definition for a Alert Graph widget.","description_kind":"plain"},"max_items":1},"alert_value_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"precision":{"type":"number","description":"The precision to use when displaying the value. Use `*` for maximum precision.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true}},"description":"The definition for a Alert Value widget.","description_kind":"plain"},"max_items":1},"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"check_status_definition":{"nesting_mode":"list","block":{"attributes":{"check":{"type":"string","description":"The check to use in the widget.","description_kind":"plain","required":true},"group":{"type":"string","description":"The check group to use in the widget.","description_kind":"plain","optional":true},"group_by":{"type":["list","string"],"description":"When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.","description_kind":"plain","optional":true},"grouping":{"type":"string","description":"The kind of grouping to use. Valid values are `check`, `cluster`.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to use in the widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Check Status widget.","description_kind":"plain"},"max_items":1},"distribution_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Distribution widget.","description_kind":"plain"},"max_items":1},"event_stream_definition":{"nesting_mode":"list","block":{"attributes":{"event_size":{"type":"string","description":"The size to use to display an event. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Stream widget.","description_kind":"plain"},"max_items":1},"event_timeline_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Timeline widget.","description_kind":"plain"},"max_items":1},"free_text_definition":{"nesting_mode":"list","block":{"attributes":{"color":{"type":"string","description":"The color of the text in the widget.","description_kind":"plain","optional":true},"font_size":{"type":"string","description":"The size of the text in the widget.","description_kind":"plain","optional":true},"text":{"type":"string","description":"The text to display in the widget.","description_kind":"plain","required":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true}},"description":"The definition for a Free Text widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"heatmap_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Heatmap widget.","description_kind":"plain"},"max_items":1},"hostmap_definition":{"nesting_mode":"list","block":{"attributes":{"group":{"type":["list","string"],"description":"The list of tags to group nodes by.","description_kind":"plain","optional":true},"no_group_hosts":{"type":"bool","description":"A Boolean indicating whether to show ungrouped nodes.","description_kind":"plain","optional":true},"no_metric_hosts":{"type":"bool","description":"A Boolean indicating whether to show nodes with no metrics.","description_kind":"plain","optional":true},"node_type":{"type":"string","description":"The type of node used. Valid values are `host`, `container`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"The list of tags to filter nodes by.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"fill":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"size":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"fill_max":{"type":"string","description":"The max value to use to color the map.","description_kind":"plain","optional":true},"fill_min":{"type":"string","description":"The min value to use to color the map.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Hostmap widget.","description_kind":"plain"},"max_items":1},"iframe_definition":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true}},"description":"The definition for an Iframe widget.","description_kind":"plain"},"max_items":1},"image_definition":{"nesting_mode":"list","block":{"attributes":{"has_background":{"type":"bool","description":"Whether to display a background or not. Defaults to `true`.","description_kind":"plain","optional":true},"has_border":{"type":"bool","description":"Whether to display a border or not. Defaults to `true`.","description_kind":"plain","optional":true},"horizontal_align":{"type":"string","description":"The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"margin":{"type":"string","description":"The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.","description_kind":"plain","optional":true},"sizing":{"type":"string","description":"The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true},"url_dark_theme":{"type":"string","description":"The URL in dark mode to use as a data source for the widget.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for an Image widget","description_kind":"plain"},"max_items":1},"list_stream_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"response_format":{"type":"string","description":"Widget response format. Valid values are `event_list`.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Widget column field.","description_kind":"plain","required":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","required":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.","description_kind":"plain","required":true},"event_size":{"type":"string","description":"Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"List of indexes.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","optional":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated list stream widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.","description_kind":"plain"},"min_items":1}},"description":"The definition for a List Stream widget.","description_kind":"plain"},"max_items":1},"log_stream_definition":{"nesting_mode":"list","block":{"attributes":{"columns":{"type":["list","string"],"description":"Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"message_display":{"type":"string","description":"The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","optional":true},"show_date_column":{"type":"bool","description":"If the date column should be displayed.","description_kind":"plain","optional":true},"show_message_column":{"type":"bool","description":"If the message column should be displayed.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"The definition for an Log Stream widget.","description_kind":"plain"},"max_items":1},"manage_status_definition":{"nesting_mode":"list","block":{"attributes":{"color_preference":{"type":"string","description":"Whether to colorize text or background. Valid values are `background`, `text`.","description_kind":"plain","optional":true},"display_format":{"type":"string","description":"The display setting to use. Valid values are `counts`, `countsAndList`, `list`.","description_kind":"plain","optional":true},"hide_zero_counts":{"type":"bool","description":"A Boolean indicating whether to hide empty categories.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"show_last_triggered":{"type":"bool","description":"A Boolean indicating whether to show when monitors/groups last triggered.","description_kind":"plain","optional":true},"show_priority":{"type":"bool","description":"Whether to show the priorities column.","description_kind":"plain","optional":true},"sort":{"type":"string","description":"The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.","description_kind":"plain","optional":true},"summary_type":{"type":"string","description":"The summary type to use. Valid values are `monitors`, `groups`, `combined`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for an Manage Status widget.","description_kind":"plain"},"max_items":1},"note_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the note.","description_kind":"plain","optional":true},"content":{"type":"string","description":"The content of the note.","description_kind":"plain","required":true},"font_size":{"type":"string","description":"The size of the text.","description_kind":"plain","optional":true},"has_padding":{"type":"bool","description":"Whether to add padding or not. Defaults to `true`.","description_kind":"plain","optional":true},"show_tick":{"type":"bool","description":"Whether to show a tick or not.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"tick_edge":{"type":"string","description":"When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.","description_kind":"plain","optional":true},"tick_pos":{"type":"string","description":"When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for a Note widget.","description_kind":"plain"},"max_items":1},"powerpack_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the powerpack title.","description_kind":"plain","optional":true},"banner_img":{"type":"string","description":"URL of image to display as a banner for the powerpack.","description_kind":"plain","optional":true},"powerpack_id":{"type":"string","description":"UUID of the associated powerpack.","description_kind":"plain","required":true},"show_title":{"type":"bool","description":"Whether to show the title of the powerpack.","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title of the powerpack.","description_kind":"plain","optional":true}},"block_types":{"template_variables":{"nesting_mode":"list","block":{"block_types":{"controlled_by_powerpack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled at the powerpack level.","description_kind":"plain"}},"controlled_externally":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled by the external resource, such as the dashboard this powerpack is on.","description_kind":"plain"}}},"description":"The list of template variables for this powerpack.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Powerpack widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"run_workflow_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"workflow_id":{"type":"string","description":"Workflow ID","description_kind":"plain","required":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"input":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the workflow input.","description_kind":"plain","required":true},"value":{"type":"string","description":"Dashboard template variable. Can be suffixed with `.value` or `.key`.","description_kind":"plain","required":true}},"description":"Array of workflow inputs to map to dashboard template variables.","description_kind":"plain"}}},"description":"The definition for a Run Workflow widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"service_level_objective_definition":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"global_time_target":{"type":"string","description":"The global time target of the widget.","description_kind":"plain","optional":true},"show_error_budget":{"type":"bool","description":"Whether to show the error budget or not.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"The ID of the service level objective used by the widget.","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description":"A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"view_mode":{"type":"string","description":"The view mode for the widget. Valid values are `overall`, `component`, `both`.","description_kind":"plain","required":true},"view_type":{"type":"string","description":"The type of view to use when displaying the widget. Only `detail` is supported.","description_kind":"plain","required":true}},"description":"The definition for a Service Level Objective widget.","description_kind":"plain"},"max_items":1},"servicemap_definition":{"nesting_mode":"list","block":{"attributes":{"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The definition for a Service Map widget.","description_kind":"plain"},"max_items":1},"slo_list_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the SLO List request. Valid values are `slo_list`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of results to display in the table. Defaults to `100`.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","required":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated SLO List widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for an SLO (Service Level Objective) List widget.","description_kind":"plain"},"max_items":1},"split_graph_definition":{"nesting_mode":"list","block":{"attributes":{"has_uniform_y_axes":{"type":"bool","description":"Normalize y axes across graphs.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"size":{"type":"string","description":"Size of the individual graphs in the split.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"source_widget_definition":{"nesting_mode":"list","block":{"block_types":{"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1}},"description":"The original widget we are splitting on.","description_kind":"plain"},"min_items":1,"max_items":1},"split_config":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of graphs to display in the widget.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"How to aggregate the sort metric for the purposes of ordering.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric to use for sorting graphs.","description_kind":"plain","required":true}},"description":"Defines the metric and aggregation used as the sort value","description_kind":"plain"},"max_items":1}},"description":"Controls the order in which graphs appear in the split.","description_kind":"plain"},"min_items":1,"max_items":1},"split_dimensions":{"nesting_mode":"list","block":{"attributes":{"one_graph_per":{"type":"string","description":"The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag.","description_kind":"plain","required":true}},"description":"The property by which the graph splits","description_kind":"plain"},"min_items":1,"max_items":1},"static_splits":{"nesting_mode":"list","block":{"block_types":{"split_vector":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_values":{"type":["list","string"],"description_kind":"plain","required":true}},"description":"The split graph list contains a graph for each value of the split dimension.","description_kind":"plain"},"min_items":1}},"description":"The property by which the graph splits","description_kind":"plain"},"max_items":100}},"description":"Encapsulates all user choices about how to split a graph.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Split Graph widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"topology_map_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the Topology request ('topology'). Valid values are `topology`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.","description_kind":"plain","required":true},"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true}},"description":"The query for a Topology request.","description_kind":"plain"},"min_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).","description_kind":"plain"}}},"description":"The definition for a Topology Map widget.","description_kind":"plain"},"max_items":1},"trace_service_definition":{"nesting_mode":"list","block":{"attributes":{"display_format":{"type":"string","description":"The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.","description_kind":"plain","optional":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"show_breakdown":{"type":"bool","description":"Whether to show the latency breakdown or not.","description_kind":"plain","optional":true},"show_distribution":{"type":"bool","description":"Whether to show the latency distribution or not.","description_kind":"plain","optional":true},"show_errors":{"type":"bool","description":"Whether to show the error metrics or not.","description_kind":"plain","optional":true},"show_hits":{"type":"bool","description":"Whether to show the hits metrics or not","description_kind":"plain","optional":true},"show_latency":{"type":"bool","description":"Whether to show the latency metrics or not.","description_kind":"plain","optional":true},"show_resource_list":{"type":"bool","description":"Whether to show the resource list or not.","description_kind":"plain","optional":true},"size_format":{"type":"string","description":"The size of the widget. Valid values are `small`, `medium`, `large`.","description_kind":"plain","optional":true},"span_name":{"type":"string","description":"APM span name","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Trace Service widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1},"widget_layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","required":true},"is_column_break":{"type":"bool","description":"Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.","description_kind":"plain","optional":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","required":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true}},"description":"The layout of the widget on a 'free' dashboard.","description_kind":"plain"},"max_items":1}},"description":"The list of widgets in this group.","description_kind":"plain"}}},"description":"The definition for a Group widget.","description_kind":"plain"},"max_items":1},"heatmap_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Heatmap widget.","description_kind":"plain"},"max_items":1},"hostmap_definition":{"nesting_mode":"list","block":{"attributes":{"group":{"type":["list","string"],"description":"The list of tags to group nodes by.","description_kind":"plain","optional":true},"no_group_hosts":{"type":"bool","description":"A Boolean indicating whether to show ungrouped nodes.","description_kind":"plain","optional":true},"no_metric_hosts":{"type":"bool","description":"A Boolean indicating whether to show nodes with no metrics.","description_kind":"plain","optional":true},"node_type":{"type":"string","description":"The type of node used. Valid values are `host`, `container`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"The list of tags to filter nodes by.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"fill":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"size":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"fill_max":{"type":"string","description":"The max value to use to color the map.","description_kind":"plain","optional":true},"fill_min":{"type":"string","description":"The min value to use to color the map.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Hostmap widget.","description_kind":"plain"},"max_items":1},"iframe_definition":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true}},"description":"The definition for an Iframe widget.","description_kind":"plain"},"max_items":1},"image_definition":{"nesting_mode":"list","block":{"attributes":{"has_background":{"type":"bool","description":"Whether to display a background or not. Defaults to `true`.","description_kind":"plain","optional":true},"has_border":{"type":"bool","description":"Whether to display a border or not. Defaults to `true`.","description_kind":"plain","optional":true},"horizontal_align":{"type":"string","description":"The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"margin":{"type":"string","description":"The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.","description_kind":"plain","optional":true},"sizing":{"type":"string","description":"The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true},"url_dark_theme":{"type":"string","description":"The URL in dark mode to use as a data source for the widget.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for an Image widget","description_kind":"plain"},"max_items":1},"list_stream_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"response_format":{"type":"string","description":"Widget response format. Valid values are `event_list`.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Widget column field.","description_kind":"plain","required":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","required":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.","description_kind":"plain","required":true},"event_size":{"type":"string","description":"Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"List of indexes.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","optional":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated list stream widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.","description_kind":"plain"},"min_items":1}},"description":"The definition for a List Stream widget.","description_kind":"plain"},"max_items":1},"log_stream_definition":{"nesting_mode":"list","block":{"attributes":{"columns":{"type":["list","string"],"description":"Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"message_display":{"type":"string","description":"The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","optional":true},"show_date_column":{"type":"bool","description":"If the date column should be displayed.","description_kind":"plain","optional":true},"show_message_column":{"type":"bool","description":"If the message column should be displayed.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"The definition for an Log Stream widget.","description_kind":"plain"},"max_items":1},"manage_status_definition":{"nesting_mode":"list","block":{"attributes":{"color_preference":{"type":"string","description":"Whether to colorize text or background. Valid values are `background`, `text`.","description_kind":"plain","optional":true},"display_format":{"type":"string","description":"The display setting to use. Valid values are `counts`, `countsAndList`, `list`.","description_kind":"plain","optional":true},"hide_zero_counts":{"type":"bool","description":"A Boolean indicating whether to hide empty categories.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"show_last_triggered":{"type":"bool","description":"A Boolean indicating whether to show when monitors/groups last triggered.","description_kind":"plain","optional":true},"show_priority":{"type":"bool","description":"Whether to show the priorities column.","description_kind":"plain","optional":true},"sort":{"type":"string","description":"The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.","description_kind":"plain","optional":true},"summary_type":{"type":"string","description":"The summary type to use. Valid values are `monitors`, `groups`, `combined`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for an Manage Status widget.","description_kind":"plain"},"max_items":1},"note_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the note.","description_kind":"plain","optional":true},"content":{"type":"string","description":"The content of the note.","description_kind":"plain","required":true},"font_size":{"type":"string","description":"The size of the text.","description_kind":"plain","optional":true},"has_padding":{"type":"bool","description":"Whether to add padding or not. Defaults to `true`.","description_kind":"plain","optional":true},"show_tick":{"type":"bool","description":"Whether to show a tick or not.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"tick_edge":{"type":"string","description":"When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.","description_kind":"plain","optional":true},"tick_pos":{"type":"string","description":"When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for a Note widget.","description_kind":"plain"},"max_items":1},"powerpack_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the powerpack title.","description_kind":"plain","optional":true},"banner_img":{"type":"string","description":"URL of image to display as a banner for the powerpack.","description_kind":"plain","optional":true},"powerpack_id":{"type":"string","description":"UUID of the associated powerpack.","description_kind":"plain","required":true},"show_title":{"type":"bool","description":"Whether to show the title of the powerpack.","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title of the powerpack.","description_kind":"plain","optional":true}},"block_types":{"template_variables":{"nesting_mode":"list","block":{"block_types":{"controlled_by_powerpack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled at the powerpack level.","description_kind":"plain"}},"controlled_externally":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled by the external resource, such as the dashboard this powerpack is on.","description_kind":"plain"}}},"description":"The list of template variables for this powerpack.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Powerpack widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"run_workflow_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"workflow_id":{"type":"string","description":"Workflow ID","description_kind":"plain","required":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"input":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the workflow input.","description_kind":"plain","required":true},"value":{"type":"string","description":"Dashboard template variable. Can be suffixed with `.value` or `.key`.","description_kind":"plain","required":true}},"description":"Array of workflow inputs to map to dashboard template variables.","description_kind":"plain"}}},"description":"The definition for a Run Workflow widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"service_level_objective_definition":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"global_time_target":{"type":"string","description":"The global time target of the widget.","description_kind":"plain","optional":true},"show_error_budget":{"type":"bool","description":"Whether to show the error budget or not.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"The ID of the service level objective used by the widget.","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description":"A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"view_mode":{"type":"string","description":"The view mode for the widget. Valid values are `overall`, `component`, `both`.","description_kind":"plain","required":true},"view_type":{"type":"string","description":"The type of view to use when displaying the widget. Only `detail` is supported.","description_kind":"plain","required":true}},"description":"The definition for a Service Level Objective widget.","description_kind":"plain"},"max_items":1},"servicemap_definition":{"nesting_mode":"list","block":{"attributes":{"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The definition for a Service Map widget.","description_kind":"plain"},"max_items":1},"slo_list_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the SLO List request. Valid values are `slo_list`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of results to display in the table. Defaults to `100`.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","required":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated SLO List widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for an SLO (Service Level Objective) List widget.","description_kind":"plain"},"max_items":1},"split_graph_definition":{"nesting_mode":"list","block":{"attributes":{"has_uniform_y_axes":{"type":"bool","description":"Normalize y axes across graphs.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"size":{"type":"string","description":"Size of the individual graphs in the split.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"source_widget_definition":{"nesting_mode":"list","block":{"block_types":{"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1}},"description":"The original widget we are splitting on.","description_kind":"plain"},"min_items":1,"max_items":1},"split_config":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of graphs to display in the widget.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"How to aggregate the sort metric for the purposes of ordering.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric to use for sorting graphs.","description_kind":"plain","required":true}},"description":"Defines the metric and aggregation used as the sort value","description_kind":"plain"},"max_items":1}},"description":"Controls the order in which graphs appear in the split.","description_kind":"plain"},"min_items":1,"max_items":1},"split_dimensions":{"nesting_mode":"list","block":{"attributes":{"one_graph_per":{"type":"string","description":"The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag.","description_kind":"plain","required":true}},"description":"The property by which the graph splits","description_kind":"plain"},"min_items":1,"max_items":1},"static_splits":{"nesting_mode":"list","block":{"block_types":{"split_vector":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_values":{"type":["list","string"],"description_kind":"plain","required":true}},"description":"The split graph list contains a graph for each value of the split dimension.","description_kind":"plain"},"min_items":1}},"description":"The property by which the graph splits","description_kind":"plain"},"max_items":100}},"description":"Encapsulates all user choices about how to split a graph.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Split Graph widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"topology_map_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the Topology request ('topology'). Valid values are `topology`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.","description_kind":"plain","required":true},"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true}},"description":"The query for a Topology request.","description_kind":"plain"},"min_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).","description_kind":"plain"}}},"description":"The definition for a Topology Map widget.","description_kind":"plain"},"max_items":1},"trace_service_definition":{"nesting_mode":"list","block":{"attributes":{"display_format":{"type":"string","description":"The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.","description_kind":"plain","optional":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"show_breakdown":{"type":"bool","description":"Whether to show the latency breakdown or not.","description_kind":"plain","optional":true},"show_distribution":{"type":"bool","description":"Whether to show the latency distribution or not.","description_kind":"plain","optional":true},"show_errors":{"type":"bool","description":"Whether to show the error metrics or not.","description_kind":"plain","optional":true},"show_hits":{"type":"bool","description":"Whether to show the hits metrics or not","description_kind":"plain","optional":true},"show_latency":{"type":"bool","description":"Whether to show the latency metrics or not.","description_kind":"plain","optional":true},"show_resource_list":{"type":"bool","description":"Whether to show the resource list or not.","description_kind":"plain","optional":true},"size_format":{"type":"string","description":"The size of the widget. Valid values are `small`, `medium`, `large`.","description_kind":"plain","optional":true},"span_name":{"type":"string","description":"APM span name","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Trace Service widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1},"widget_layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","required":true},"is_column_break":{"type":"bool","description":"Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.","description_kind":"plain","optional":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","required":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true}},"description":"The layout of the widget on a 'free' dashboard.","description_kind":"plain"},"max_items":1}},"description":"The list of widgets to display on the dashboard.","description_kind":"plain"}}},"description":"Provides a Datadog dashboard resource. This can be used to create and manage Datadog dashboards.","description_kind":"plain"}},"datadog_dashboard_json":{"version":0,"block":{"attributes":{"dashboard":{"type":"string","description":"The JSON formatted definition of the Dashboard.","description_kind":"plain","required":true},"dashboard_lists":{"type":["set","number"],"description":"A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior.","description_kind":"plain","optional":true},"dashboard_lists_removed":{"type":["set","number"],"description":"The list of dashboard lists this dashboard should be removed from. Internal only.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"url":{"type":"string","description":"The URL of the dashboard.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog dashboard JSON resource. This can be used to create and manage Datadog dashboards using the JSON definition.","description_kind":"plain"}},"datadog_dashboard_list":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the Dashboard List","description_kind":"plain","required":true}},"block_types":{"dash_item":{"nesting_mode":"set","block":{"attributes":{"dash_id":{"type":"string","description":"The ID of the dashboard to add","description_kind":"plain","required":true},"type":{"type":"string","description":"The type of this dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, `integration_screenboard`, `integration_timeboard`, `host_timeboard`.","description_kind":"plain","required":true}},"description":"A set of dashboard items that belong to this list","description_kind":"plain"}}},"description":"Provides a Datadog dashboard_list resource. This can be used to create and manage Datadog Dashboard Lists and the individual dashboards within them.","description_kind":"plain"}},"datadog_downtime":{"version":0,"block":{"attributes":{"active":{"type":"bool","description":"When true indicates this downtime is being actively applied","description_kind":"plain","computed":true},"active_child_id":{"type":"number","description":"The id corresponding to the downtime object definition of the active child for the original parent recurring downtime. This field will only exist on recurring downtimes.","description_kind":"plain","computed":true},"disabled":{"type":"bool","description":"When true indicates this downtime is not being applied","description_kind":"plain","computed":true},"end":{"type":"number","description":"Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC.","description_kind":"plain","optional":true},"end_date":{"type":"string","description":"String representing date and time to end the downtime in RFC3339 format.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"An optional message to provide when creating the downtime, can include notification handles","description_kind":"plain","optional":true},"monitor_id":{"type":"number","description":"When specified, this downtime will only apply to this monitor","description_kind":"plain","optional":true},"monitor_tags":{"type":["set","string"],"description":"A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced","description_kind":"plain","optional":true},"mute_first_recovery_notification":{"type":"bool","description":"When true the first recovery notification during the downtime will be muted Defaults to `false`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"specify the group scope to which this downtime applies. For everything use '*'","description_kind":"plain","required":true},"start":{"type":"number","description":"Specify when this downtime should start. Accepts a Unix timestamp in UTC.","description_kind":"plain","optional":true},"start_date":{"type":"string","description":"String representing date and time to start the downtime in RFC3339 format.","description_kind":"plain","optional":true},"timezone":{"type":"string","description":"The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to `\"UTC\"`.","description_kind":"plain","optional":true}},"block_types":{"recurrence":{"nesting_mode":"list","block":{"attributes":{"period":{"type":"number","description":"How often to repeat as an integer. For example to repeat every 3 days, select a `type` of `days` and a `period` of `3`.","description_kind":"plain","optional":true},"rrule":{"type":"string","description":"The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). Only applicable when `type` is `rrule`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"One of `days`, `weeks`, `months`, `years`, or `rrule`.","description_kind":"plain","required":true},"until_date":{"type":"number","description":"The date at which the recurrence should end as a POSIX timestamp. `until_occurrences` and `until_date` are mutually exclusive.","description_kind":"plain","optional":true},"until_occurrences":{"type":"number","description":"How many times the downtime will be rescheduled. `until_occurrences` and `until_date` are mutually exclusive.","description_kind":"plain","optional":true},"week_days":{"type":["list","string"],"description":"A list of week days to repeat on. Choose from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. Only applicable when `type` is `weeks`. First letter must be capitalized.","description_kind":"plain","optional":true}},"description":"Optional recurring schedule for this downtime","description_kind":"plain"},"max_items":1}},"description":"This resource is deprecated — use the `datadog_downtime_schedule resource` instead. Provides a Datadog downtime resource. This can be used to create and manage Datadog downtimes.","description_kind":"plain","deprecated":true}},"datadog_downtime_schedule":{"version":0,"block":{"attributes":{"display_timezone":{"type":"string","description":"The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"message":{"type":"string","description":"A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same `@username` notation as events.","description_kind":"plain","optional":true},"mute_first_recovery_notification":{"type":"bool","description":"If the first recovery notification during a downtime should be muted.","description_kind":"plain","optional":true,"computed":true},"notify_end_states":{"type":["set","string"],"description":"States that will trigger a monitor notification when the `notify_end_types` action occurs.","description_kind":"plain","optional":true,"computed":true},"notify_end_types":{"type":["set","string"],"description":"Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state.","description_kind":"plain","optional":true,"computed":true},"scope":{"type":"string","description":"The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).","description_kind":"plain","required":true}},"block_types":{"monitor_identifier":{"nesting_mode":"single","block":{"attributes":{"monitor_id":{"type":"number","description":"ID of the monitor to prevent notifications.","description_kind":"plain","optional":true},"monitor_tags":{"type":["set","string"],"description":"A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags` to `[*]` configures the downtime to mute all monitors for the given scope.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"one_time_schedule":{"nesting_mode":"single","block":{"attributes":{"end":{"type":"string","description":"ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends.","description_kind":"plain","optional":true},"start":{"type":"string","description":"ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"recurring_schedule":{"nesting_mode":"single","block":{"attributes":{"timezone":{"type":"string","description":"The timezone in which to schedule the downtime.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"recurrence":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description":"The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'.","description_kind":"plain","required":true},"rrule":{"type":"string","description":"The `RRULE` standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`. Most common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).","description_kind":"plain","required":true},"start":{"type":"string","description":"ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the downtime starts the moment it is created.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description":"Provides a Datadog DowntimeSchedule resource. This can be used to create and manage Datadog downtimes.","description_kind":"plain"}},"datadog_integration_aws":{"version":0,"block":{"attributes":{"access_key_id":{"type":"string","description":"Your AWS access key ID. Only required if your AWS account is a GovCloud or China account.","description_kind":"plain","optional":true},"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","optional":true},"account_specific_namespace_rules":{"type":["map","bool"],"description":"Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules).","description_kind":"plain","optional":true},"cspm_resource_collection_enabled":{"type":"string","description":"Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection.","description_kind":"plain","optional":true,"computed":true},"excluded_regions":{"type":["set","string"],"description":"An array of AWS regions to exclude from metrics collection.","description_kind":"plain","optional":true},"external_id":{"type":"string","description":"AWS External ID. **NOTE** This provider will not be able to detect changes made to the `external_id` field from outside Terraform.","description_kind":"plain","computed":true},"filter_tags":{"type":["list","string"],"description":"Array of EC2 tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from EC2. Wildcards, such as `?` (for single characters) and `*` (for multiple characters) can also be used. Only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. Host matching a given tag can also be excluded by adding `!` before the tag. e.x. `env:production,instance-type:c1.*,!region:us-east-1`.","description_kind":"plain","optional":true},"host_tags":{"type":["list","string"],"description":"Array of tags (in the form `key:value`) to add to all hosts and metrics reporting through this integration.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metrics_collection_enabled":{"type":"string","description":"Whether Datadog collects metrics for this AWS account.","description_kind":"plain","optional":true,"computed":true},"resource_collection_enabled":{"type":"string","description":"Whether Datadog collects a standard set of resources from your AWS account.","description_kind":"plain","optional":true,"computed":true},"role_name":{"type":"string","description":"Your Datadog role delegation name.","description_kind":"plain","optional":true},"secret_access_key":{"type":"string","description":"Your AWS secret access key. Only required if your AWS account is a GovCloud or China account.","description_kind":"plain","optional":true,"sensitive":true}},"description":"Provides a Datadog - Amazon Web Services integration resource. This can be used to create and manage Datadog - Amazon Web Services integration.\n\n","description_kind":"plain"}},"datadog_integration_aws_event_bridge":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"create_event_bus":{"type":"bool","description":"True if Datadog should create the event bus in addition to the event source. Requires the `events:CreateEventBus` permission. Defaults to `true`.","description_kind":"plain","optional":true,"computed":true},"event_generator_name":{"type":"string","description":"The given part of the event source name, which is then combined with an assigned suffix to form the full name.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"region":{"type":"string","description":"The event source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints).","description_kind":"plain","required":true}},"description":"Provides a Datadog - Amazon Web Services integration EventBridge resource. This can be used to create and manage Event Sources for each Datadog integrated AWS account.","description_kind":"plain"}},"datadog_integration_aws_lambda_arn":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"lambda_arn":{"type":"string","description":"The ARN of the Datadog forwarder Lambda.","description_kind":"plain","required":true}},"description":"Provides a Datadog - Amazon Web Services integration Lambda ARN resource. This can be used to create and manage the log collection Lambdas for an account.\n\nUpdate operations are currently not supported with datadog API so any change forces a new resource.","description_kind":"plain"}},"datadog_integration_aws_log_collection":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"services":{"type":["list","string"],"description":"A list of services to collect logs from. See the [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) for more details on which services are supported.","description_kind":"plain","required":true}},"description":"Provides a Datadog - Amazon Web Services integration log collection resource. This can be used to manage which AWS services logs are collected from for an account.","description_kind":"plain"}},"datadog_integration_aws_tag_filter":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"namespace":{"type":"string","description":"The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`.","description_kind":"plain","required":true},"tag_filter_str":{"type":"string","description":"The tag filter string.","description_kind":"plain","required":true}},"description":"Provides a Datadog AWS tag filter resource. This can be used to create and manage Datadog AWS tag filters.","description_kind":"plain"}},"datadog_integration_azure":{"version":0,"block":{"attributes":{"app_service_plan_filters":{"type":"string","description":"This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"automute":{"type":"bool","description":"Silence monitors for expected Azure VM shutdowns. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"client_id":{"type":"string","description":"Your Azure web application ID.","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"(Required for Initial Creation) Your Azure web application secret key.","description_kind":"plain","required":true,"sensitive":true},"container_app_filters":{"type":"string","description":"This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"cspm_enabled":{"type":"bool","description":"When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration.\nNote: This requires `resource_collection_enabled` to be set to true. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"custom_metrics_enabled":{"type":"bool","description":"Enable custom metrics for your organization. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"host_filters":{"type":"string","description":"String of host tag(s) (in the form `key:value,key:value`) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. `env:production,deploymentgroup:red` Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"resource_collection_enabled":{"type":"bool","description":"When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration.","description_kind":"plain","optional":true,"computed":true},"tenant_name":{"type":"string","description":"Your Azure Active Directory ID.","description_kind":"plain","required":true}},"description":"Provides a Datadog - Microsoft Azure integration resource. This can be used to create and manage the integrations.","description_kind":"plain"}},"datadog_integration_cloudflare_account":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The API key (or token) for the Cloudflare account.","description_kind":"plain","required":true,"sensitive":true},"email":{"type":"string","description":"The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the Cloudflare account.","description_kind":"plain","required":true}},"description":"Provides a Datadog IntegrationCloudflareAccount resource. This can be used to create and manage Datadog integration_cloudflare_account.","description_kind":"plain"}},"datadog_integration_confluent_account":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The API key associated with your Confluent account.","description_kind":"plain","required":true},"api_secret":{"type":"string","description":"The API secret associated with your Confluent account.","description_kind":"plain","required":true,"sensitive":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.","description_kind":"plain","optional":true}},"description":"Provides a Datadog IntegrationConfluentAccount resource. This can be used to create and manage Datadog integration_confluent_account.","description_kind":"plain"}},"datadog_integration_confluent_resource":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Confluent Account ID.","description_kind":"plain","required":true},"enable_custom_metrics":{"type":"bool","description":"Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"resource_id":{"type":"string","description":"The ID associated with a Confluent resource.","description_kind":"plain","required":true},"resource_type":{"type":"string","description":"The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.","description_kind":"plain","optional":true}},"description":"Provides a Datadog IntegrationConfluentResource resource. This can be used to create and manage Datadog integration_confluent_resource.","description_kind":"plain"}},"datadog_integration_fastly_account":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The API key for the Fastly account.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the Fastly account.","description_kind":"plain","required":true}},"description":"Provides a Datadog IntegrationFastlyAccount resource. This can be used to create and manage Datadog integration_fastly_account.","description_kind":"plain"}},"datadog_integration_fastly_service":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Fastly Account id.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"service_id":{"type":"string","description":"The ID of the Fastly service.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags for the Fastly service.","description_kind":"plain","optional":true}},"description":"Provides a Datadog IntegrationFastlyService resource. This can be used to create and manage Datadog integration_fastly_service.","description_kind":"plain"}},"datadog_integration_gcp":{"version":0,"block":{"attributes":{"automute":{"type":"bool","description":"Silence monitors for expected GCE instance shutdowns. Defaults to `false`.","description_kind":"plain","optional":true},"client_email":{"type":"string","description":"Your email found in your JSON service account key.","description_kind":"plain","required":true},"client_id":{"type":"string","description":"Your ID found in your JSON service account key.","description_kind":"plain","required":true},"cspm_resource_collection_enabled":{"type":"bool","description":"Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to `false`.","description_kind":"plain","optional":true},"host_filters":{"type":"string","description":"Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"private_key":{"type":"string","description":"Your private key name found in your JSON service account key.","description_kind":"plain","required":true,"sensitive":true},"private_key_id":{"type":"string","description":"Your private key ID found in your JSON service account key.","description_kind":"plain","required":true},"project_id":{"type":"string","description":"Your Google Cloud project ID found in your JSON service account key.","description_kind":"plain","required":true}},"description":"This resource is deprecated — use the `datadog_integration_gcp_sts resource` instead. Provides a Datadog - Google Cloud Platform integration resource. This can be used to create and manage Datadog - Google Cloud Platform integration.","description_kind":"plain","deprecated":true}},"datadog_integration_gcp_sts":{"version":0,"block":{"attributes":{"automute":{"type":"bool","description":"Silence monitors for expected GCE instance shutdowns.","description_kind":"plain","optional":true,"computed":true},"client_email":{"type":"string","description":"Your service account email address.","description_kind":"plain","required":true},"delegate_account_email":{"type":"string","description":"Datadog's STS Delegate Email.","description_kind":"plain","computed":true},"host_filters":{"type":["set","string"],"description":"Your Host Filters.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"is_cspm_enabled":{"type":"bool","description":"When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog Integration GCP Sts resource. This can be used to create and manage Datadog - Google Cloud Platform integration.","description_kind":"plain"}},"datadog_integration_opsgenie_service_object":{"version":0,"block":{"attributes":{"custom_url":{"type":"string","description":"The custom url for a custom region.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name for the Opsgenie service.","description_kind":"plain","required":true},"opsgenie_api_key":{"type":"string","description":"The Opsgenie API key for the Opsgenie service. Note: Since the Datadog API never returns Opsgenie API keys, it is impossible to detect [drifts](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform). The best way to solve a drift is to manually mark the Service Object resource with [terraform taint](https://www.terraform.io/docs/commands/taint.html) to have it destroyed and recreated.","description_kind":"plain","required":true,"sensitive":true},"region":{"type":"string","description":"The region for the Opsgenie service. Valid values are `us`, `eu`, `custom`.","description_kind":"plain","required":true}},"description":"Resource for interacting with Datadog Opsgenie Service API.","description_kind":"plain"}},"datadog_integration_pagerduty":{"version":0,"block":{"attributes":{"api_token":{"type":"string","description":"Your PagerDuty API token.","description_kind":"plain","optional":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"schedules":{"type":["list","string"],"description":"Array of your schedule URLs.","description_kind":"plain","optional":true},"subdomain":{"type":"string","description":"Your PagerDuty account’s personalized subdomain name.","description_kind":"plain","required":true}},"description":"Provides a Datadog - PagerDuty resource. This can be used to create and manage Datadog - PagerDuty integration. See also [PagerDuty Integration Guide](https://www.pagerduty.com/docs/guides/datadog-integration-guide/).","description_kind":"plain"}},"datadog_integration_pagerduty_service_object":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service_key":{"type":"string","description":"Your Service name associated service key in PagerDuty. This key may also be referred to as an Integration Key or Routing Key in the Pagerduty Integration [documentation](https://www.pagerduty.com/docs/guides/datadog-integration-guide/), UI, and within the [Pagerduty Provider for Terraform](https://registry.terraform.io/providers/PagerDuty/pagerduty/latest/docs/resources/service_integration#integration_key) Note: Since the Datadog API never returns service keys, it is impossible to detect [drifts](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform). The best way to solve a drift is to manually mark the Service Object resource with [terraform taint](https://www.terraform.io/docs/commands/taint.html) to have it destroyed and recreated.","description_kind":"plain","required":true,"sensitive":true},"service_name":{"type":"string","description":"Your Service name in PagerDuty.","description_kind":"plain","required":true}},"description":"Provides access to individual Service Objects of Datadog - PagerDuty integrations. Note that the Datadog - PagerDuty integration must be activated in the Datadog UI in order for this resource to be usable.","description_kind":"plain"}},"datadog_integration_slack_channel":{"version":0,"block":{"attributes":{"account_name":{"type":"string","description":"Slack account name.","description_kind":"plain","required":true},"channel_name":{"type":"string","description":"Slack channel name.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"display":{"nesting_mode":"list","block":{"attributes":{"message":{"type":"bool","description":"Show the main body of the alert event. Defaults to `true`.","description_kind":"plain","optional":true},"notified":{"type":"bool","description":"Show the list of @-handles in the alert event. Defaults to `true`.","description_kind":"plain","optional":true},"snapshot":{"type":"bool","description":"Show the alert event's snapshot image. Defaults to `true`.","description_kind":"plain","optional":true},"tags":{"type":"bool","description":"Show the scopes on which the monitor alerted. Defaults to `true`.","description_kind":"plain","optional":true}},"description":"Configuration options for what is shown in an alert event message.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Resource for interacting with the Datadog Slack channel API","description_kind":"plain"}},"datadog_ip_allowlist":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Whether the IP Allowlist is enabled.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"entry":{"nesting_mode":"set","block":{"attributes":{"cidr_block":{"type":"string","description_kind":"plain","required":true},"note":{"type":"string","description":"Note accompanying IP address.","description_kind":"plain","optional":true}},"description":"Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note.","description_kind":"plain"}}},"description":"Provides the Datadog IP allowlist resource. This can be used to manage the Datadog IP allowlist","description_kind":"plain"}},"datadog_logs_archive":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_tags":{"type":"bool","description":"To store the tags in the archive, set the value `true`. If it is set to `false`, the tags will be dropped when the logs are sent to the archive. Defaults to `false`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Your archive name.","description_kind":"plain","required":true},"query":{"type":"string","description":"The archive query/filter. Logs matching this query are included in the archive.","description_kind":"plain","required":true},"rehydration_max_scan_size_in_gb":{"type":"number","description":"To limit the rehydration scan size for the archive, set a value in GB.","description_kind":"plain","optional":true},"rehydration_tags":{"type":["list","string"],"description":"An array of tags to add to rehydrated logs from an archive.","description_kind":"plain","optional":true}},"block_types":{"azure_archive":{"nesting_mode":"list","block":{"attributes":{"client_id":{"type":"string","description":"Your client id.","description_kind":"plain","required":true},"container":{"type":"string","description":"The container where the archive is stored.","description_kind":"plain","required":true},"path":{"type":"string","description":"The path where the archive is stored.","description_kind":"plain","optional":true},"storage_account":{"type":"string","description":"The associated storage account.","description_kind":"plain","required":true},"tenant_id":{"type":"string","description":"Your tenant id.","description_kind":"plain","required":true}},"description":"Definition of an azure archive.","description_kind":"plain"},"max_items":1},"gcs_archive":{"nesting_mode":"list","block":{"attributes":{"bucket":{"type":"string","description":"Name of your GCS bucket.","description_kind":"plain","required":true},"client_email":{"type":"string","description":"Your client email.","description_kind":"plain","required":true},"path":{"type":"string","description":"Path where the archive is stored.","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"Your project id.","description_kind":"plain","required":true}},"description":"Definition of a GCS archive.","description_kind":"plain"},"max_items":1},"s3_archive":{"nesting_mode":"list","block":{"attributes":{"account_id":{"type":"string","description":"Your AWS account id.","description_kind":"plain","required":true},"bucket":{"type":"string","description":"Name of your s3 bucket.","description_kind":"plain","required":true},"path":{"type":"string","description":"Path where the archive is stored.","description_kind":"plain","optional":true},"role_name":{"type":"string","description":"Your AWS role name","description_kind":"plain","required":true}},"description":"Definition of an s3 archive.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog Logs Archive API resource, which is used to create and manage Datadog logs archives.","description_kind":"plain"}},"datadog_logs_archive_order":{"version":0,"block":{"attributes":{"archive_ids":{"type":["list","string"],"description":"The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If `archive_ids` is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog [Logs Archive API](https://docs.datadoghq.com/api/v2/logs-archives/) resource, which is used to manage Datadog log archives order.","description_kind":"plain"}},"datadog_logs_custom_pipeline":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"processor":{"nesting_mode":"list","block":{"block_types":{"arithmetic_processor":{"nesting_mode":"list","block":{"attributes":{"expression":{"type":"string","description":"Arithmetic operation between one or more log attributes.","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description":"Boolean value to enable your pipeline.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Your pipeline name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the arithmetic operation.","description_kind":"plain","required":true}},"description":"Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)","description_kind":"plain"},"max_items":1},"attribute_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"override_on_conflict":{"type":"bool","description":"Override the target element if already set.","description_kind":"plain","optional":true},"preserve_source":{"type":"bool","description":"Remove or preserve the remapped source element.","description_kind":"plain","optional":true},"source_type":{"type":"string","description":"Defines where the sources are from (log `attribute` or `tag`).","description_kind":"plain","required":true},"sources":{"type":["list","string"],"description":"List of source attributes or tags.","description_kind":"plain","required":true},"target":{"type":"string","description":"Final attribute or tag name to remap the sources.","description_kind":"plain","required":true},"target_format":{"type":"string","description":"If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified.","description_kind":"plain","optional":true},"target_type":{"type":"string","description":"Defines if the target is a log `attribute` or `tag`.","description_kind":"plain","required":true}},"description":"Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)","description_kind":"plain"},"max_items":1},"category_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the category","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the target attribute whose value is defined by the matching category.","description_kind":"plain","required":true}},"block_types":{"category":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"List of filters to match or exclude a log with their corresponding name to assign a custom value to the log.","description_kind":"plain"},"min_items":1}},"description":"Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)","description_kind":"plain"},"max_items":1},"date_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)","description_kind":"plain"},"max_items":1},"geo_ip_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)","description_kind":"plain"},"max_items":1},"grok_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"samples":{"type":["list","string"],"description":"List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters.","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the log attribute to parse.","description_kind":"plain","required":true}},"block_types":{"grok":{"nesting_mode":"list","block":{"attributes":{"match_rules":{"type":"string","description":"Match rules for your grok parser.","description_kind":"plain","required":true},"support_rules":{"type":"string","description":"Support rules for your grok parser.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)","description_kind":"plain"},"max_items":1},"lookup_processor":{"nesting_mode":"list","block":{"attributes":{"default_lookup":{"type":"string","description":"Default lookup value to use if there is no entry in the lookup table for the value of the source attribute.","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_table":{"type":["list","string"],"description":"List of entries of the lookup table using `key,value` format.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"message_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)","description_kind":"plain"},"max_items":1},"pipeline":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"processor":{"nesting_mode":"list","block":{"block_types":{"arithmetic_processor":{"nesting_mode":"list","block":{"attributes":{"expression":{"type":"string","description":"Arithmetic operation between one or more log attributes.","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description":"Boolean value to enable your pipeline.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Your pipeline name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the arithmetic operation.","description_kind":"plain","required":true}},"description":"Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)","description_kind":"plain"},"max_items":1},"attribute_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"override_on_conflict":{"type":"bool","description":"Override the target element if already set.","description_kind":"plain","optional":true},"preserve_source":{"type":"bool","description":"Remove or preserve the remapped source element.","description_kind":"plain","optional":true},"source_type":{"type":"string","description":"Defines where the sources are from (log `attribute` or `tag`).","description_kind":"plain","required":true},"sources":{"type":["list","string"],"description":"List of source attributes or tags.","description_kind":"plain","required":true},"target":{"type":"string","description":"Final attribute or tag name to remap the sources.","description_kind":"plain","required":true},"target_format":{"type":"string","description":"If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified.","description_kind":"plain","optional":true},"target_type":{"type":"string","description":"Defines if the target is a log `attribute` or `tag`.","description_kind":"plain","required":true}},"description":"Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)","description_kind":"plain"},"max_items":1},"category_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the category","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the target attribute whose value is defined by the matching category.","description_kind":"plain","required":true}},"block_types":{"category":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"List of filters to match or exclude a log with their corresponding name to assign a custom value to the log.","description_kind":"plain"},"min_items":1}},"description":"Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)","description_kind":"plain"},"max_items":1},"date_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)","description_kind":"plain"},"max_items":1},"geo_ip_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)","description_kind":"plain"},"max_items":1},"grok_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"samples":{"type":["list","string"],"description":"List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters.","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the log attribute to parse.","description_kind":"plain","required":true}},"block_types":{"grok":{"nesting_mode":"list","block":{"attributes":{"match_rules":{"type":"string","description":"Match rules for your grok parser.","description_kind":"plain","required":true},"support_rules":{"type":"string","description":"Support rules for your grok parser.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)","description_kind":"plain"},"max_items":1},"lookup_processor":{"nesting_mode":"list","block":{"attributes":{"default_lookup":{"type":"string","description":"Default lookup value to use if there is no entry in the lookup table for the value of the source attribute.","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_table":{"type":["list","string"],"description":"List of entries of the lookup table using `key,value` format.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"message_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)","description_kind":"plain"},"max_items":1},"reference_table_lookup_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_enrichment_table":{"type":"string","description":"Name of the Reference Table for the source attribute and their associated target attribute values.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"service_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)","description_kind":"plain"},"max_items":1},"status_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)","description_kind":"plain"},"max_items":1},"string_builder_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If it replaces all missing attributes of template by an empty string.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the processor.","description_kind":"plain","optional":true},"target":{"type":"string","description":"The name of the attribute that contains the result of the template.","description_kind":"plain","required":true},"template":{"type":"string","description":"The formula with one or more attributes and raw text.","description_kind":"plain","required":true}},"description":"String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)","description_kind":"plain"},"max_items":1},"trace_id_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)","description_kind":"plain"},"max_items":1},"url_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"normalize_ending_slashes":{"type":"bool","description":"Normalize the ending slashes or not.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)","description_kind":"plain"},"max_items":1},"user_agent_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_encoded":{"type":"bool","description":"If the source attribute is URL encoded or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser)","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"reference_table_lookup_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_enrichment_table":{"type":"string","description":"Name of the Reference Table for the source attribute and their associated target attribute values.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"service_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)","description_kind":"plain"},"max_items":1},"status_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)","description_kind":"plain"},"max_items":1},"string_builder_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If it replaces all missing attributes of template by an empty string.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the processor.","description_kind":"plain","optional":true},"target":{"type":"string","description":"The name of the attribute that contains the result of the template.","description_kind":"plain","required":true},"template":{"type":"string","description":"The formula with one or more attributes and raw text.","description_kind":"plain","required":true}},"description":"String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)","description_kind":"plain"},"max_items":1},"trace_id_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)","description_kind":"plain"},"max_items":1},"url_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"normalize_ending_slashes":{"type":"bool","description":"Normalize the ending slashes or not.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)","description_kind":"plain"},"max_items":1},"user_agent_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_encoded":{"type":"bool","description":"If the source attribute is URL encoded or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser)","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Provides a Datadog [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/) resource, which is used to create and manage Datadog logs custom pipelines. Each `datadog_logs_custom_pipeline` resource defines a complete pipeline. The order of the pipelines is maintained in a different resource: `datadog_logs_pipeline_order`. When creating a new pipeline, you need to **explicitly** add this pipeline to the `datadog_logs_pipeline_order` resource to track the pipeline. Similarly, when a pipeline needs to be destroyed, remove its references from the `datadog_logs_pipeline_order` resource.","description_kind":"plain"}},"datadog_logs_index":{"version":0,"block":{"attributes":{"daily_limit":{"type":"number","description":"The number of log events you can send in this index per day before you are rate-limited.","description_kind":"plain","optional":true},"disable_daily_limit":{"type":"bool","description":"If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the index.","description_kind":"plain","required":true},"retention_days":{"type":"number","description":"The number of days before logs are deleted from this index.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"exclusion_filter":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"A boolean stating if the exclusion is active or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the exclusion filter.","description_kind":"plain","optional":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Only logs matching the filter criteria and the query of the parent index will be considered for this exclusion filter.","description_kind":"plain","optional":true},"sample_rate":{"type":"number","description":"The fraction of logs excluded by the exclusion filter, when active.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"List of exclusion filters.","description_kind":"plain"}},"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Logs filter criteria. Only logs matching this filter criteria are considered for this index.","description_kind":"plain","required":true}},"description":"Logs filter","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Provides a Datadog Logs Index API resource. This can be used to create and manage Datadog logs indexes. \n**Note:** It is not possible to delete logs indexes through Terraform, so an index remains in your account after the resource is removed from your terraform config. Reach out to support to delete a logs index.","description_kind":"plain"}},"datadog_logs_index_order":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"indexes":{"type":["list","string"],"description":"The index resource list. Logs are tested against the query filter of each index one by one following the order of the list.","description_kind":"plain","required":true},"name":{"type":"string","description":"The unique name of the index order resource.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog Logs Index API resource. This can be used to manage the order of Datadog logs indexes.","description_kind":"plain"}},"datadog_logs_integration_pipeline":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Boolean value to enable your pipeline.","description_kind":"plain","optional":true}},"description":"Provides a Datadog Logs Pipeline API resource to manage the integrations. Integration pipelines are the pipelines that are automatically installed for your organization when sending the logs with specific sources. You don't need to maintain or update these types of pipelines. Keeping them as resources, however, allows you to manage the order of your pipelines by referencing them in your `datadog_logs_pipeline_order` resource. If you don't need the `pipeline_order` feature, this resource declaration can be omitted.","description_kind":"plain"}},"datadog_logs_metric":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the log-based metric. This field can't be updated after creation.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation_type":{"type":"string","description":"The type of aggregation to use. This field can't be updated after creation. Valid values are `count`, `distribution`.","description_kind":"plain","required":true},"include_percentiles":{"type":"bool","description":"Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an `aggregation_type` of distribution.","description_kind":"plain","optional":true},"path":{"type":"string","description":"The path to the value the log-based metric will aggregate on (only used if the aggregation type is a \"distribution\"). This field can't be updated after creation.","description_kind":"plain","optional":true}},"description":"The compute rule to compute the log-based metric. This field can't be updated after creation.","description_kind":"plain"},"min_items":1,"max_items":1},"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The search query - following the log search syntax.","description_kind":"plain","required":true}},"description":"The log-based metric filter. Logs matching this filter will be aggregated in this metric.","description_kind":"plain"},"min_items":1,"max_items":1},"group_by":{"nesting_mode":"set","block":{"attributes":{"path":{"type":"string","description":"The path to the value the log-based metric will be aggregated over.","description_kind":"plain","required":true},"tag_name":{"type":"string","description":"Name of the tag that gets created.","description_kind":"plain","required":true}},"description":"The rules for the group by.","description_kind":"plain"}}},"description":"Resource for interacting with the logs_metric API","description_kind":"plain"}},"datadog_logs_pipeline_order":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name attribute in the resource `datadog_logs_pipeline_order` needs to be unique. It's recommended to use the same value as the resource name. No related field is available in [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order).","description_kind":"plain","required":true},"pipelines":{"type":["list","string"],"description":"The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs.","description_kind":"plain","required":true}},"description":"Provides a Datadog Logs Pipeline API resource, which is used to manage Datadog log pipelines order.","description_kind":"plain"}},"datadog_metric_metadata":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description of the metric.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metric":{"type":"string","description":"The name of the metric.","description_kind":"plain","required":true},"per_unit":{"type":"string","description":"Per unit of the metric such as `second` in `bytes per second`.","description_kind":"plain","optional":true},"short_name":{"type":"string","description":"A short name of the metric.","description_kind":"plain","optional":true},"statsd_interval":{"type":"number","description":"If applicable, statsd flush interval in seconds for the metric.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Metric type such as `count`, `gauge`, or `rate`. Updating a metric of type `distribution` is not supported. If you would like to see the `distribution` type returned, contact [Datadog support](https://docs.datadoghq.com/help/).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"Primary unit of the metric such as `byte` or `operation`.","description_kind":"plain","optional":true}},"description":"Provides a Datadog metric_metadata resource. This can be used to manage a metric's metadata.","description_kind":"plain"}},"datadog_metric_tag_configuration":{"version":0,"block":{"attributes":{"exclude_tags_mode":{"type":"bool","description":"Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to `false`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_percentiles":{"type":"bool","description":"Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a `metric_type` of distribution.","description_kind":"plain","optional":true},"metric_name":{"type":"string","description":"The metric name for this resource.","description_kind":"plain","required":true},"metric_type":{"type":"string","description":"The metric's type. This field can't be updated after creation. Valid values are `gauge`, `count`, `rate`, `distribution`.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tag keys that will be queryable for your metric.","description_kind":"plain","required":true}},"block_types":{"aggregations":{"nesting_mode":"set","block":{"attributes":{"space":{"type":"string","description":"A space aggregation for use in query. Valid values are `avg`, `max`, `min`, `sum`.","description_kind":"plain","required":true},"time":{"type":"string","description":"A time aggregation for use in query. Valid values are `avg`, `count`, `max`, `min`, `sum`.","description_kind":"plain","required":true}},"description":"A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a `metric_type` of count, rate, or gauge.","description_kind":"plain"}}},"description":"Provides a Datadog metric tag configuration resource. This can be used to modify tag configurations for metrics.","description_kind":"plain"}},"datadog_monitor":{"version":0,"block":{"attributes":{"enable_logs_sample":{"type":"bool","description":"A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to `false`.","description_kind":"plain","optional":true},"enable_samples":{"type":"bool","description":"Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors.","description_kind":"plain","computed":true},"escalation_message":{"type":"string","description":"A message to include with a re-notification. Supports the `@username` notification allowed elsewhere.","description_kind":"plain","optional":true},"evaluation_delay":{"type":"number","description":"(Only applies to metric alert) Time (in seconds) to delay evaluation, as a non-negative integer.\n\nFor example, if the value is set to `300` (5min), the `timeframe` is set to `last_5m` and the time is 7:00, the monitor will evaluate data from 6:50 to 6:55. This is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor will always have data during evaluation.","description_kind":"plain","optional":true,"computed":true},"force_delete":{"type":"bool","description":"A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor).","description_kind":"plain","optional":true},"group_retention_duration":{"type":"string","description":"The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.","description_kind":"plain","optional":true},"groupby_simple_monitor":{"type":"bool","description":"Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to `false`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_tags":{"type":"bool","description":"A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to `true`.","description_kind":"plain","optional":true},"locked":{"type":"bool","description":"A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to `false`. **Deprecated.** Use `restricted_roles`.","description_kind":"plain","deprecated":true,"optional":true},"message":{"type":"string","description":"A message to include with notifications for this monitor.\n\nEmail notifications can be sent to specific users by using the same `@username` notation as events.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of Datadog monitor.","description_kind":"plain","required":true},"new_group_delay":{"type":"number","description":"The time (in seconds) to skip evaluations for new groups.\n\n`new_group_delay` overrides `new_host_delay` if it is set to a nonzero value.","description_kind":"plain","optional":true},"new_host_delay":{"type":"number","description":"**Deprecated**. See `new_group_delay`. Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of monitor results. Should be a non-negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set `new_host_delay` to zero for monitors grouped by host. **Deprecated.** Use `new_group_delay` except when setting `new_host_delay` to zero. Defaults to `300`.","description_kind":"plain","deprecated":true,"optional":true},"no_data_timeframe":{"type":"number","description":"The number of minutes before a monitor will notify when data stops reporting.\n\nWe recommend at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks. Defaults to `10`.","description_kind":"plain","optional":true},"notification_preset_name":{"type":"string","description":"Toggles the display of additional content sent in the monitor notification. Valid values are `show_all`, `hide_query`, `hide_handles`, `hide_all`.","description_kind":"plain","optional":true},"notify_audit":{"type":"bool","description":"A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to `false`.","description_kind":"plain","optional":true},"notify_by":{"type":["set","string"],"description":"Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert.","description_kind":"plain","optional":true},"notify_no_data":{"type":"bool","description":"A boolean indicating whether this monitor will notify when data stops reporting. Defaults to `false`.","description_kind":"plain","optional":true},"on_missing_data":{"type":"string","description":"Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`.","description_kind":"plain","optional":true},"priority":{"type":"number","description":"Integer from 1 (high) to 5 (low) indicating alert severity.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) for details. `terraform plan` will validate query contents unless `validate` is set to `false`.\n\n**Note:** APM latency data is now available as Distribution Metrics. Existing monitors have been migrated automatically but all terraformed monitors can still use the existing metrics. We strongly recommend updating monitor definitions to query the new metrics. To learn more, or to see examples of how to update your terraform definitions to utilize the new distribution metrics, see the [detailed doc](https://docs.datadoghq.com/tracing/guide/ddsketch_trace_metrics/).","description_kind":"plain","required":true},"renotify_interval":{"type":"number","description":"The number of minutes after the last notification before a monitor will re-notify on the current status. It will only re-notify if it's not resolved.","description_kind":"plain","optional":true},"renotify_occurrences":{"type":"number","description":"The number of re-notification messages that should be sent on the current status.","description_kind":"plain","optional":true},"renotify_statuses":{"type":["set","string"],"description":"The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`.","description_kind":"plain","optional":true},"require_full_window":{"type":"bool","description":"A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to `false` for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, `require_full_window` must be false and will be ignored. Defaults to `true`.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) in the `data.id` field.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API","description_kind":"plain","optional":true},"timeout_h":{"type":"number","description":"The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the monitor. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). Note: The monitor type cannot be changed after a monitor is created. Valid values are `composite`, `event alert`, `log alert`, `metric alert`, `process alert`, `query alert`, `rum alert`, `service check`, `synthetics alert`, `trace-analytics alert`, `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring alert`.","description_kind":"plain","required":true},"validate":{"type":"bool","description":"If set to `false`, skip the validation call done during plan.","description_kind":"plain","optional":true}},"block_types":{"monitor_threshold_windows":{"nesting_mode":"list","block":{"attributes":{"recovery_window":{"type":"string","description":"Describes how long an anomalous metric must be normal before the alert recovers.","description_kind":"plain","optional":true},"trigger_window":{"type":"string","description":"Describes how long a metric must be anomalous before an alert triggers.","description_kind":"plain","optional":true}},"description":"A mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m` . Can only be used for, and are required for, anomaly monitors.","description_kind":"plain"},"max_items":1},"monitor_thresholds":{"nesting_mode":"list","block":{"attributes":{"critical":{"type":"string","description":"The monitor `CRITICAL` threshold. Must be a number.","description_kind":"plain","optional":true},"critical_recovery":{"type":"string","description":"The monitor `CRITICAL` recovery threshold. Must be a number.","description_kind":"plain","optional":true},"ok":{"type":"string","description":"The monitor `OK` threshold. Only supported in monitor type `service check`. Must be a number.","description_kind":"plain","optional":true},"unknown":{"type":"string","description":"The monitor `UNKNOWN` threshold. Only supported in monitor type `service check`. Must be a number.","description_kind":"plain","optional":true},"warning":{"type":"string","description":"The monitor `WARNING` threshold. Must be a number.","description_kind":"plain","optional":true},"warning_recovery":{"type":"string","description":"The monitor `WARNING` recovery threshold. Must be a number.","description_kind":"plain","optional":true}},"description":"Alert thresholds of the monitor.","description_kind":"plain"},"max_items":1},"scheduling_options":{"nesting_mode":"list","block":{"block_types":{"custom_schedule":{"nesting_mode":"list","block":{"block_types":{"recurrence":{"nesting_mode":"list","block":{"attributes":{"rrule":{"type":"string","description":"Must be a valid `rrule`. See API docs for supported fields","description_kind":"plain","required":true},"start":{"type":"string","description":"Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss'","description_kind":"plain","optional":true},"timezone":{"type":"string","description":"'tz database' format. Example: `America/New_York` or `UTC`","description_kind":"plain","required":true}},"description":"A list of recurrence definitions. Length must be 1.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Configuration options for the custom schedules. If `start` is omitted, the monitor creation time will be used.","description_kind":"plain"}},"evaluation_window":{"nesting_mode":"list","block":{"attributes":{"day_starts":{"type":"string","description":"The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in `HH:mm` format.","description_kind":"plain","optional":true},"hour_starts":{"type":"number","description":"The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59.","description_kind":"plain","optional":true},"month_starts":{"type":"number","description":"The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1.","description_kind":"plain","optional":true}},"description":"Configuration options for the evaluation window. If `hour_starts` is set, no other fields may be set. Otherwise, `day_starts` and `month_starts` must be set together.","description_kind":"plain"}}},"description":"Configuration options for scheduling.","description_kind":"plain"}},"variables":{"nesting_mode":"list","block":{"block_types":{"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog monitor resource. This can be used to create and manage Datadog monitors.","description_kind":"plain"}},"datadog_monitor_config_policy":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_type":{"type":"string","description":"The monitor config policy type Valid values are `tag`.","description_kind":"plain","required":true}},"block_types":{"tag_policy":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description":"The key of the tag","description_kind":"plain","required":true},"tag_key_required":{"type":"bool","description":"If a tag key is required for monitor creation","description_kind":"plain","required":true},"valid_tag_values":{"type":["list","string"],"description":"Valid values for the tag","description_kind":"plain","required":true}},"description":"Config for a tag policy. Only set if `policy_type` is `tag`.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog monitor config policy resource. This can be used to create and manage Datadog monitor config policies.","description_kind":"plain"}},"datadog_monitor_json":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor":{"type":"string","description":"The JSON formatted definition of the monitor.","description_kind":"plain","required":true},"url":{"type":"string","description":"The URL of the monitor.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog monitor JSON resource. This can be used to create and manage Datadog monitors using the JSON definition.","description_kind":"plain"}},"datadog_organization_settings":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the organization.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name for Organization.","description_kind":"plain","optional":true},"public_id":{"type":"string","description":"The `public_id` of the organization you are operating within.","description_kind":"plain","computed":true}},"block_types":{"settings":{"nesting_mode":"list","block":{"attributes":{"private_widget_share":{"type":"bool","description":"Whether or not the organization users can share widgets outside of Datadog. Defaults to `false`.","description_kind":"plain","optional":true},"saml_autocreate_access_role":{"type":"string","description":"The access role of the user. Options are `st` (standard user), `adm` (admin user), or `ro` (read-only user). Allowed enum values: `st`, `adm` , `ro`, `ERROR` Defaults to `\"st\"`.","description_kind":"plain","optional":true},"saml_can_be_enabled":{"type":"bool","description":"Whether or not SAML can be enabled for this organization.","description_kind":"plain","computed":true},"saml_idp_endpoint":{"type":"string","description":"Identity provider endpoint for SAML authentication.","description_kind":"plain","computed":true},"saml_idp_metadata_uploaded":{"type":"bool","description":"Whether or not a SAML identity provider metadata file was provided to the Datadog organization.","description_kind":"plain","computed":true},"saml_login_url":{"type":"string","description":"URL for SAML logging.","description_kind":"plain","computed":true}},"block_types":{"saml":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether or not SAML is enabled for this organization. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"SAML properties","description_kind":"plain"},"min_items":1,"max_items":1},"saml_autocreate_users_domains":{"nesting_mode":"list","block":{"attributes":{"domains":{"type":["list","string"],"description":"List of domains where the SAML automated user creation is enabled.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Whether or not the automated user creation based on SAML domain is enabled. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"List of domains where the SAML automated user creation is enabled.","description_kind":"plain"},"min_items":1,"max_items":1},"saml_idp_initiated_login":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether or not a SAML identity provider metadata file was provided to the Datadog organization. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Whether or not a SAML identity provider metadata file was provided to the Datadog organization.","description_kind":"plain"},"min_items":1,"max_items":1},"saml_strict_mode":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Organization settings","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog Organization resource. This can be used to manage your Datadog organization's settings.","description_kind":"plain"}},"datadog_powerpack":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"The description of the powerpack.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name for the powerpack.","description_kind":"plain","optional":true},"show_title":{"type":"bool","description":"Whether or not title should be displayed in the powerpack.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"List of tags to identify this powerpack.","description_kind":"plain","optional":true}},"block_types":{"layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","optional":true,"computed":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","optional":true,"computed":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0.","description_kind":"plain","optional":true,"computed":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Should be greater than or equal to 0.","description_kind":"plain","optional":true,"computed":true}},"description":"The layout of the powerpack on a free-form dashboard.","description_kind":"plain"},"max_items":1},"template_variables":{"nesting_mode":"list","block":{"attributes":{"defaults":{"type":["list","string"],"description":"One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with `OR`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the powerpack template variable.","description_kind":"plain","required":true}},"description":"The list of template variables for this powerpack.","description_kind":"plain"}},"widget":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"number","description":"The ID of the widget.","description_kind":"plain","computed":true}},"block_types":{"alert_graph_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"viz_type":{"type":"string","description":"Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.","description_kind":"plain","required":true}},"description":"The definition for a Alert Graph widget.","description_kind":"plain"},"max_items":1},"alert_value_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"precision":{"type":"number","description":"The precision to use when displaying the value. Use `*` for maximum precision.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true}},"description":"The definition for a Alert Value widget.","description_kind":"plain"},"max_items":1},"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"check_status_definition":{"nesting_mode":"list","block":{"attributes":{"check":{"type":"string","description":"The check to use in the widget.","description_kind":"plain","required":true},"group":{"type":"string","description":"The check group to use in the widget.","description_kind":"plain","optional":true},"group_by":{"type":["list","string"],"description":"When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.","description_kind":"plain","optional":true},"grouping":{"type":"string","description":"The kind of grouping to use. Valid values are `check`, `cluster`.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to use in the widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Check Status widget.","description_kind":"plain"},"max_items":1},"distribution_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Distribution widget.","description_kind":"plain"},"max_items":1},"event_stream_definition":{"nesting_mode":"list","block":{"attributes":{"event_size":{"type":"string","description":"The size to use to display an event. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Stream widget.","description_kind":"plain"},"max_items":1},"event_timeline_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Timeline widget.","description_kind":"plain"},"max_items":1},"free_text_definition":{"nesting_mode":"list","block":{"attributes":{"color":{"type":"string","description":"The color of the text in the widget.","description_kind":"plain","optional":true},"font_size":{"type":"string","description":"The size of the text in the widget.","description_kind":"plain","optional":true},"text":{"type":"string","description":"The text to display in the widget.","description_kind":"plain","required":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true}},"description":"The definition for a Free Text widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"heatmap_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Heatmap widget.","description_kind":"plain"},"max_items":1},"hostmap_definition":{"nesting_mode":"list","block":{"attributes":{"group":{"type":["list","string"],"description":"The list of tags to group nodes by.","description_kind":"plain","optional":true},"no_group_hosts":{"type":"bool","description":"A Boolean indicating whether to show ungrouped nodes.","description_kind":"plain","optional":true},"no_metric_hosts":{"type":"bool","description":"A Boolean indicating whether to show nodes with no metrics.","description_kind":"plain","optional":true},"node_type":{"type":"string","description":"The type of node used. Valid values are `host`, `container`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"The list of tags to filter nodes by.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"fill":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"size":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"fill_max":{"type":"string","description":"The max value to use to color the map.","description_kind":"plain","optional":true},"fill_min":{"type":"string","description":"The min value to use to color the map.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Hostmap widget.","description_kind":"plain"},"max_items":1},"iframe_definition":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true}},"description":"The definition for an Iframe widget.","description_kind":"plain"},"max_items":1},"image_definition":{"nesting_mode":"list","block":{"attributes":{"has_background":{"type":"bool","description":"Whether to display a background or not. Defaults to `true`.","description_kind":"plain","optional":true},"has_border":{"type":"bool","description":"Whether to display a border or not. Defaults to `true`.","description_kind":"plain","optional":true},"horizontal_align":{"type":"string","description":"The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"margin":{"type":"string","description":"The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.","description_kind":"plain","optional":true},"sizing":{"type":"string","description":"The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true},"url_dark_theme":{"type":"string","description":"The URL in dark mode to use as a data source for the widget.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for an Image widget","description_kind":"plain"},"max_items":1},"list_stream_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"response_format":{"type":"string","description":"Widget response format. Valid values are `event_list`.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Widget column field.","description_kind":"plain","required":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","required":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.","description_kind":"plain","required":true},"event_size":{"type":"string","description":"Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"List of indexes.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","optional":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated list stream widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.","description_kind":"plain"},"min_items":1}},"description":"The definition for a List Stream widget.","description_kind":"plain"},"max_items":1},"log_stream_definition":{"nesting_mode":"list","block":{"attributes":{"columns":{"type":["list","string"],"description":"Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"message_display":{"type":"string","description":"The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","optional":true},"show_date_column":{"type":"bool","description":"If the date column should be displayed.","description_kind":"plain","optional":true},"show_message_column":{"type":"bool","description":"If the message column should be displayed.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"The definition for an Log Stream widget.","description_kind":"plain"},"max_items":1},"manage_status_definition":{"nesting_mode":"list","block":{"attributes":{"color_preference":{"type":"string","description":"Whether to colorize text or background. Valid values are `background`, `text`.","description_kind":"plain","optional":true},"display_format":{"type":"string","description":"The display setting to use. Valid values are `counts`, `countsAndList`, `list`.","description_kind":"plain","optional":true},"hide_zero_counts":{"type":"bool","description":"A Boolean indicating whether to hide empty categories.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"show_last_triggered":{"type":"bool","description":"A Boolean indicating whether to show when monitors/groups last triggered.","description_kind":"plain","optional":true},"show_priority":{"type":"bool","description":"Whether to show the priorities column.","description_kind":"plain","optional":true},"sort":{"type":"string","description":"The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.","description_kind":"plain","optional":true},"summary_type":{"type":"string","description":"The summary type to use. Valid values are `monitors`, `groups`, `combined`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for an Manage Status widget.","description_kind":"plain"},"max_items":1},"note_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the note.","description_kind":"plain","optional":true},"content":{"type":"string","description":"The content of the note.","description_kind":"plain","required":true},"font_size":{"type":"string","description":"The size of the text.","description_kind":"plain","optional":true},"has_padding":{"type":"bool","description":"Whether to add padding or not. Defaults to `true`.","description_kind":"plain","optional":true},"show_tick":{"type":"bool","description":"Whether to show a tick or not.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"tick_edge":{"type":"string","description":"When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.","description_kind":"plain","optional":true},"tick_pos":{"type":"string","description":"When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for a Note widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"run_workflow_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"workflow_id":{"type":"string","description":"Workflow ID","description_kind":"plain","required":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"input":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the workflow input.","description_kind":"plain","required":true},"value":{"type":"string","description":"Dashboard template variable. Can be suffixed with `.value` or `.key`.","description_kind":"plain","required":true}},"description":"Array of workflow inputs to map to dashboard template variables.","description_kind":"plain"}}},"description":"The definition for a Run Workflow widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"service_level_objective_definition":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"global_time_target":{"type":"string","description":"The global time target of the widget.","description_kind":"plain","optional":true},"show_error_budget":{"type":"bool","description":"Whether to show the error budget or not.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"The ID of the service level objective used by the widget.","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description":"A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"view_mode":{"type":"string","description":"The view mode for the widget. Valid values are `overall`, `component`, `both`.","description_kind":"plain","required":true},"view_type":{"type":"string","description":"The type of view to use when displaying the widget. Only `detail` is supported.","description_kind":"plain","required":true}},"description":"The definition for a Service Level Objective widget.","description_kind":"plain"},"max_items":1},"servicemap_definition":{"nesting_mode":"list","block":{"attributes":{"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The definition for a Service Map widget.","description_kind":"plain"},"max_items":1},"slo_list_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the SLO List request. Valid values are `slo_list`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of results to display in the table. Defaults to `100`.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","required":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated SLO List widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for an SLO (Service Level Objective) List widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"topology_map_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the Topology request ('topology'). Valid values are `topology`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.","description_kind":"plain","required":true},"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true}},"description":"The query for a Topology request.","description_kind":"plain"},"min_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).","description_kind":"plain"}}},"description":"The definition for a Topology Map widget.","description_kind":"plain"},"max_items":1},"trace_service_definition":{"nesting_mode":"list","block":{"attributes":{"display_format":{"type":"string","description":"The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.","description_kind":"plain","optional":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"show_breakdown":{"type":"bool","description":"Whether to show the latency breakdown or not.","description_kind":"plain","optional":true},"show_distribution":{"type":"bool","description":"Whether to show the latency distribution or not.","description_kind":"plain","optional":true},"show_errors":{"type":"bool","description":"Whether to show the error metrics or not.","description_kind":"plain","optional":true},"show_hits":{"type":"bool","description":"Whether to show the hits metrics or not","description_kind":"plain","optional":true},"show_latency":{"type":"bool","description":"Whether to show the latency metrics or not.","description_kind":"plain","optional":true},"show_resource_list":{"type":"bool","description":"Whether to show the resource list or not.","description_kind":"plain","optional":true},"size_format":{"type":"string","description":"The size of the widget. Valid values are `small`, `medium`, `large`.","description_kind":"plain","optional":true},"span_name":{"type":"string","description":"APM span name","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Trace Service widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1},"widget_layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","required":true},"is_column_break":{"type":"bool","description":"Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.","description_kind":"plain","optional":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","required":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true}},"description":"The layout of the widget on a 'free' dashboard.","description_kind":"plain"},"max_items":1}},"description":"The list of widgets to display in the powerpack.","description_kind":"plain"}}},"description":"Provides a Datadog powerpack resource. This can be used to create and manage Datadog powerpacks.","description_kind":"plain"}},"datadog_restriction_policy":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"resource_id":{"type":"string","description":"Identifier for the resource, formatted as resource_type:resource_id.\n\nNote: Dashboards support is in private beta. Reach out to your Datadog contact or support to enable this.","description_kind":"plain","required":true}},"block_types":{"bindings":{"nesting_mode":"set","block":{"attributes":{"principals":{"type":["set","string"],"description":"An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role` and `org`. The org ID can be obtained through the api/v2/users API.","description_kind":"plain","required":true},"relation":{"type":"string","description":"The role/level of access. See this page for more details https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"Provides a Datadog RestrictionPolicy resource. This can be used to create and manage Datadog restriction policies.","description_kind":"plain"}},"datadog_role":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role.","description_kind":"plain","required":true},"user_count":{"type":"number","description":"Number of users that have this role.","description_kind":"plain","computed":true},"validate":{"type":"bool","description":"If set to `false`, skip the validation call done during plan.","description_kind":"plain","optional":true}},"block_types":{"permission":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description":"ID of the permission to assign.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the permission.","description_kind":"plain","computed":true}},"description":"Set of objects containing the permission ID and the name of the permissions granted to this role.","description_kind":"plain"}}},"description":"Provides a Datadog role resource. This can be used to create and manage Datadog roles.","description_kind":"plain"}},"datadog_rum_application":{"version":0,"block":{"attributes":{"client_token":{"type":"string","description":"The client token.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the RUM application.","description_kind":"plain","required":true},"type":{"type":"string","description":"Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`. Defaults to `\"browser\"`.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog RUM application resource. This can be used to create and manage Datadog RUM applications.","description_kind":"plain"}},"datadog_security_monitoring_default_rule":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Enable the rule. Defaults to `true`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"The rule type.","description_kind":"plain","computed":true}},"block_types":{"case":{"nesting_mode":"list","block":{"attributes":{"notifications":{"type":["list","string"],"description":"Notification targets for each rule case.","description_kind":"plain","required":true},"status":{"type":"string","description":"Status of the rule case to match. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true}},"description":"Cases of the rule, this is used to update notifications.","description_kind":"plain"},"max_items":10},"filter":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description":"The type of filtering action. Allowed enum values: require, suppress Valid values are `require`, `suppress`.","description_kind":"plain","required":true},"query":{"type":"string","description":"Query for selecting logs to apply the filtering action.","description_kind":"plain","required":true}},"description":"Additional queries to filter matched events before they are processed.","description_kind":"plain"}},"options":{"nesting_mode":"list","block":{"attributes":{"decrease_criticality_based_on_env":{"type":"bool","description":"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Options on default rules. Note that only a subset of fields can be updated on default rule options.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog Security Monitoring Rule API resource for default rules. It can only be imported, you can't create a default rule.","description_kind":"plain"}},"datadog_security_monitoring_filter":{"version":0,"block":{"attributes":{"filtered_data_type":{"type":"string","description":"The filtered data type. Valid values are `logs`. Defaults to `\"logs\"`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Whether the security filter is enabled.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the security filter.","description_kind":"plain","required":true},"query":{"type":"string","description":"The query of the security filter.","description_kind":"plain","required":true},"version":{"type":"number","description":"The version of the security filter.","description_kind":"plain","computed":true}},"block_types":{"exclusion_filter":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Exclusion filter name.","description_kind":"plain","required":true},"query":{"type":"string","description":"Exclusion filter query. Logs that match this query are excluded from the security filter.","description_kind":"plain","required":true}},"description":"Exclusion filters to exclude some logs from the security filter.","description_kind":"plain"}}},"description":"Provides a Datadog Security Monitoring Rule API resource for security filters.","description_kind":"plain"}},"datadog_security_monitoring_rule":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Whether the rule is enabled. Defaults to `true`.","description_kind":"plain","optional":true},"has_extended_title":{"type":"bool","description":"Whether the notifications include the triggering group-by values in their title. Defaults to `false`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"Message for generated signals.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the rule.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"Tags for generated signals.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `\"log_detection\"`.","description_kind":"plain","optional":true}},"block_types":{"case":{"nesting_mode":"list","block":{"attributes":{"condition":{"type":"string","description":"A rule case contains logical operations (`\u003e`,`\u003e=`, `\u0026\u0026`, `||`) to determine if a signal should be generated based on the event counts in the previously defined queries.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the case.","description_kind":"plain","optional":true},"notifications":{"type":["list","string"],"description":"Notification targets for each rule case.","description_kind":"plain","optional":true},"status":{"type":"string","description":"Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true}},"description":"Cases for generating signals.","description_kind":"plain"},"min_items":1,"max_items":10},"filter":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description":"The type of filtering action. Valid values are `require`, `suppress`.","description_kind":"plain","required":true},"query":{"type":"string","description":"Query for selecting logs to apply the filtering action.","description_kind":"plain","required":true}},"description":"Additional queries to filter matched events before they are processed.","description_kind":"plain"}},"options":{"nesting_mode":"list","block":{"attributes":{"decrease_criticality_based_on_env":{"type":"bool","description":"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`.","description_kind":"plain","optional":true},"detection_method":{"type":"string","description":"The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `\"threshold\"`.","description_kind":"plain","optional":true},"evaluation_window":{"type":"number","description":"A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`.","description_kind":"plain","optional":true},"keep_alive":{"type":"number","description":"Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`.","description_kind":"plain","required":true},"max_signal_duration":{"type":"number","description":"A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`.","description_kind":"plain","required":true}},"block_types":{"impossible_travel_options":{"nesting_mode":"list","block":{"attributes":{"baseline_user_locations":{"type":"bool","description":"If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Options for rules using the impossible travel detection method.","description_kind":"plain"},"max_items":1},"new_value_options":{"nesting_mode":"list","block":{"attributes":{"forget_after":{"type":"number","description":"The duration in days after which a learned value is forgotten. Valid values are `1`, `2`, `7`, `14`, `21`, `28`.","description_kind":"plain","required":true},"learning_duration":{"type":"number","description":"The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are `0`, `1`, `7`. Defaults to `1`.","description_kind":"plain","optional":true},"learning_method":{"type":"string","description":"The learning method used to determine when signals should be generated for values that weren't learned. Valid values are `duration`, `threshold`. Defaults to `\"duration\"`.","description_kind":"plain","optional":true},"learning_threshold":{"type":"number","description":"A number of occurrences after which signals are generated for values that weren't learned. Valid values are `0`, `1`. Defaults to `0`.","description_kind":"plain","optional":true}},"description":"New value rules specific options.","description_kind":"plain"},"max_items":1}},"description":"Options on rules.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `\"count\"`.","description_kind":"plain","optional":true},"distinct_fields":{"type":["list","string"],"description":"Field for which the cardinality is measured. Sent as an array.","description_kind":"plain","optional":true},"group_by_fields":{"type":["list","string"],"description":"Fields to group by.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The target field to aggregate over when using the `sum`, `max`, or `geo_data` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider.","description_kind":"plain","deprecated":true,"optional":true},"metrics":{"type":["list","string"],"description":"Group of target fields to aggregate over when using the `sum`, `max`, `geo_data`, or `new_value` aggregations. The `sum`, `max`, and `geo_data` aggregations only accept one value in this list, whereas the `new_value` aggregation accepts up to five values.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the query. Not compatible with `new_value` aggregations.","description_kind":"plain","optional":true},"query":{"type":"string","description":"Query to run on logs.","description_kind":"plain","required":true}},"block_types":{"agent_rule":{"nesting_mode":"list","block":{"attributes":{"agent_rule_id":{"type":"string","description":"**Deprecated**. It won't be applied anymore.","description_kind":"plain","required":true},"expression":{"type":"string","description":"**Deprecated**. It won't be applied anymore.","description_kind":"plain","required":true}},"description":"**Deprecated**. It won't be applied anymore. **Deprecated.** `agent_rule` has been deprecated in favor of new Agent Rule resource.","description_kind":"plain","deprecated":true}}},"description":"Queries for selecting logs which are part of the rule.","description_kind":"plain"}},"signal_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `\"event_count\"`.","description_kind":"plain","optional":true},"correlated_by_fields":{"type":["list","string"],"description":"Fields to correlate by.","description_kind":"plain","optional":true},"correlated_query_index":{"type":"string","description":"Index of the rule query used to retrieve the correlated field. An empty string applies correlation on the non-projected per query attributes of the rule. Defaults to `\"\"`.","description_kind":"plain","optional":true},"default_rule_id":{"type":"string","description":"Default Rule ID of the signal to correlate. This value is READ-ONLY.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the query. Not compatible with `new_value` aggregations.","description_kind":"plain","optional":true},"rule_id":{"type":"string","description":"Rule ID of the signal to correlate.","description_kind":"plain","required":true}},"description":"Queries for selecting logs which are part of the rule.","description_kind":"plain"}}},"description":"Provides a Datadog Security Monitoring Rule API resource. This can be used to create and manage Datadog security monitoring rules. To change settings for a default rule use `datadog_security_default_rule` instead.","description_kind":"plain"}},"datadog_sensitive_data_scanner_group":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the Datadog scanning group.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Whether or not the scanning group is enabled. If the group doesn't contain any rule or if all the rules in it are disabled, the group is force-disabled by our backend","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the Datadog scanning group.","description_kind":"plain","required":true},"product_list":{"type":["set","string"],"description":"List of products the scanning group applies. Valid values are `logs`, `rum`, `events`, `apm`.","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Query to filter the events.","description_kind":"plain","required":true}},"description":"Filter object the scanning group applies.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Provides a Sensitive Data Scanner group resource.","description_kind":"plain"}},"datadog_sensitive_data_scanner_group_order":{"version":0,"block":{"attributes":{"group_ids":{"type":["list","string"],"description":"The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog Sensitive Data Scanner Group Order API resource. This can be used to manage the order of Datadog Sensitive Data Scanner Groups.","description_kind":"plain"}},"datadog_sensitive_data_scanner_rule":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the rule.","description_kind":"plain","optional":true},"excluded_namespaces":{"type":["list","string"],"description":"Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array.","description_kind":"plain","optional":true},"group_id":{"type":"string","description":"Id of the scanning group the rule belongs to.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Whether or not the rule is enabled.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the rule.","description_kind":"plain","optional":true},"namespaces":{"type":["list","string"],"description":"Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned.","description_kind":"plain","optional":true},"pattern":{"type":"string","description":"Not included if there is a relationship to a standard pattern.","description_kind":"plain","optional":true},"standard_pattern_id":{"type":"string","description":"Id of the standard pattern the rule refers to. If provided, then pattern must not be provided.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"List of tags.","description_kind":"plain","optional":true}},"block_types":{"text_replacement":{"nesting_mode":"list","block":{"attributes":{"number_of_chars":{"type":"number","description":"Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be \u003e 0.","description_kind":"plain","optional":true},"replacement_string":{"type":"string","description":"Required if type == 'replacement_string'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are `none`, `hash`, `replacement_string`, `partial_replacement_from_beginning`, `partial_replacement_from_end`.","description_kind":"plain","required":true}},"description":"Object describing how the scanned event will be replaced. Defaults to `type: none`","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule.","description_kind":"plain"}},"datadog_service_account":{"version":0,"block":{"attributes":{"disabled":{"type":"bool","description":"Whether the service account is disabled. Defaults to `false`.","description_kind":"plain","optional":true},"email":{"type":"string","description":"Email of the associated user.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name for the service account.","description_kind":"plain","optional":true},"roles":{"type":["set","string"],"description":"A list a role IDs to assign to the service account.","description_kind":"plain","optional":true}},"description":"Provides a Datadog service account resource. This can be used to create and manage Datadog service accounts.","description_kind":"plain"}},"datadog_service_account_application_key":{"version":0,"block":{"attributes":{"created_at":{"type":"string","description":"Creation date of the application key.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"key":{"type":"string","description":"The value of the service account application key. This value cannot be imported.","description_kind":"plain","computed":true,"sensitive":true},"last4":{"type":"string","description":"The last four characters of the application key.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the application key.","description_kind":"plain","required":true},"service_account_id":{"type":"string","description":"ID of the service account that owns this key.","description_kind":"plain","required":true}},"description":"Provides a Datadog `service_account_application_key` resource. This can be used to create and manage Datadog service account application keys.","description_kind":"plain"}},"datadog_service_definition_yaml":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service_definition":{"type":"string","description":"The YAML/JSON formatted definition of the service","description_kind":"plain","required":true}},"description":"Provides a Datadog service definition resource. This can be used to create and manage Datadog service definitions in the service catalog using the YAML/JSON definition.","description_kind":"plain"}},"datadog_service_level_objective":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description of this service level objective.","description_kind":"plain","optional":true},"force_delete":{"type":"bool","description":"A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards).","description_kind":"plain","optional":true},"groups":{"type":["set","string"],"description":"A static set of groups to filter monitor-based SLOs","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor_ids":{"type":["set","number"],"description":"A static set of monitor IDs to use as part of the SLO","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of Datadog service level objective","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API","description_kind":"plain","optional":true},"target_threshold":{"type":"number","description":"The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame.","description_kind":"plain","optional":true,"computed":true},"timeframe":{"type":"string","description":"The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`.","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Valid values are `metric`, `monitor`, `time_slice`.","description_kind":"plain","required":true},"validate":{"type":"bool","description":"Whether or not to validate the SLO.","description_kind":"plain","optional":true},"warning_threshold":{"type":"number","description":"The objective's warning value in `(0,100)`. This must be greater than the target value and match the corresponding thresholds of the primary time frame.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"denominator":{"type":"string","description":"The sum of the `total` events.","description_kind":"plain","required":true},"numerator":{"type":"string","description":"The sum of all the `good` events.","description_kind":"plain","required":true}},"description":"The metric query of good / total events","description_kind":"plain"},"max_items":1},"thresholds":{"nesting_mode":"list","block":{"attributes":{"target":{"type":"number","description":"The objective's target in `(0,100)`.","description_kind":"plain","required":true},"target_display":{"type":"string","description":"A string representation of the target that indicates its precision. It uses trailing zeros to show significant decimal places (e.g. `98.00`).","description_kind":"plain","computed":true},"timeframe":{"type":"string","description":"The time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`.","description_kind":"plain","required":true},"warning":{"type":"number","description":"The objective's warning value in `(0,100)`. This must be greater than the target value.","description_kind":"plain","optional":true},"warning_display":{"type":"string","description":"A string representation of the warning target (see the description of the target_display field for details).","description_kind":"plain","computed":true}},"description":"A list of thresholds and targets that define the service level objectives from the provided SLIs.","description_kind":"plain"},"min_items":1}},"description":"Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives.","description_kind":"plain"}},"datadog_slo_correction":{"version":0,"block":{"attributes":{"category":{"type":"string","description":"Category the SLO correction belongs to. Valid values are `Scheduled Maintenance`, `Outside Business Hours`, `Deployment`, `Other`.","description_kind":"plain","required":true},"description":{"type":"string","description":"Description of the correction being made.","description_kind":"plain","optional":true},"duration":{"type":"number","description":"Length of time in seconds for a specified `rrule` recurring SLO correction (required if specifying `rrule`)","description_kind":"plain","optional":true},"end":{"type":"number","description":"Ending time of the correction in epoch seconds. Required for one time corrections, but optional if `rrule` is specified","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"rrule":{"type":"string","description":"Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, `COUNT` and `UNTIL`.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of the SLO that this correction will be applied to.","description_kind":"plain","required":true},"start":{"type":"number","description":"Starting time of the correction in epoch seconds.","description_kind":"plain","required":true},"timezone":{"type":"string","description":"The timezone to display in the UI for the correction times (defaults to \"UTC\")","description_kind":"plain","optional":true}},"description":"Resource for interacting with the slo_correction API.","description_kind":"plain"}},"datadog_spans_metric":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the span-based metric. This field can't be updated after creation.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"single","block":{"attributes":{"aggregation_type":{"type":"string","description":"The type of aggregation to use. This field can't be updated after creation.","description_kind":"plain","required":true},"include_percentiles":{"type":"bool","description":"Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the `aggregation_type` is `distribution`.","description_kind":"plain","optional":true},"path":{"type":"string","description":"The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\"). This field can't be updated after creation.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"filter":{"nesting_mode":"single","block":{"attributes":{"query":{"type":"string","description":"The search query - following the span search syntax. Defaults to `\"*\"`.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"group_by":{"nesting_mode":"set","block":{"attributes":{"path":{"type":"string","description":"The path to the value the span-based metric will be aggregated over.","description_kind":"plain","required":true},"tag_name":{"type":"string","description":"Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}}},"description":"Provides a Datadog SpansMetric resource. This can be used to create and manage Datadog spans_metric.","description_kind":"plain"}},"datadog_synthetics_concurrency_cap":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"on_demand_concurrency_cap":{"type":"number","description":"Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel.","description_kind":"plain","required":true}},"description":"Provides a Datadog Synthetics On Demand Concurrency Cap API resource. This can be used to manage the Concurrency Cap for Synthetic tests.","description_kind":"plain"}},"datadog_synthetics_global_variable":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the global variable.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Synthetics global variable name.","description_kind":"plain","required":true},"parse_test_id":{"type":"string","description":"Id of the Synthetics test to use for a variable from test.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"A list of role identifiers to associate with the Synthetics global variable.","description_kind":"plain","optional":true},"secure":{"type":"bool","description":"If set to true, the value of the global variable is hidden. Defaults to `false`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to associate with your synthetics global variable.","description_kind":"plain","optional":true},"value":{"type":"string","description":"The value of the global variable.","description_kind":"plain","required":true,"sensitive":true}},"block_types":{"options":{"nesting_mode":"list","block":{"block_types":{"totp_parameters":{"nesting_mode":"list","block":{"attributes":{"digits":{"type":"number","description":"Number of digits for the OTP.","description_kind":"plain","required":true},"refresh_interval":{"type":"number","description":"Interval for which to refresh the token (in seconds).","description_kind":"plain","required":true}},"description":"Parameters needed for MFA/TOTP.","description_kind":"plain"},"max_items":1}},"description":"Additional options for the variable, such as a MFA token.","description_kind":"plain"},"max_items":1},"parse_test_options":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Required when type = `http_header`. Defines the header to use to extract the value","description_kind":"plain","optional":true},"local_variable_name":{"type":"string","description":"When type is `local_variable`, name of the local variable to use to extract the value.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `local_variable`.","description_kind":"plain","required":true}},"block_types":{"parser":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Type of parser to extract the value. Valid values are `raw`, `json_path`, `regex`, `x_path`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Value for the parser to use, required for type `json_path` or `regex`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description":"ID of the Synthetics test to use a source of the global variable value.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog synthetics global variable resource. This can be used to create and manage Datadog synthetics global variables.","description_kind":"plain"}},"datadog_synthetics_private_location":{"version":0,"block":{"attributes":{"config":{"type":"string","description":"Configuration skeleton for the private location. See installation instructions of the private location on how to use this configuration.","description_kind":"plain","computed":true,"sensitive":true},"description":{"type":"string","description":"Description of the private location.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Synthetics private location name.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"A list of tags to associate with your synthetics private location.","description_kind":"plain","optional":true}},"block_types":{"metadata":{"nesting_mode":"list","block":{"attributes":{"restricted_roles":{"type":["set","string"],"description":"A list of role identifiers pulled from the Roles API to restrict read and write access.","description_kind":"plain","optional":true}},"description":"The private location metadata","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog synthetics private location resource. This can be used to create and manage Datadog synthetics private locations.","description_kind":"plain"}},"datadog_synthetics_test":{"version":0,"block":{"attributes":{"device_ids":{"type":["list","string"],"description":"Required if `type = \"browser\"`. Array with the different device IDs used to run the test. Valid values are `laptop_large`, `tablet`, `mobile_small`, `chrome.laptop_large`, `chrome.tablet`, `chrome.mobile_small`, `firefox.laptop_large`, `firefox.tablet`, `firefox.mobile_small`, `edge.laptop_large`, `edge.tablet`, `edge.mobile_small`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"locations":{"type":["set","string"],"description":"Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations.","description_kind":"plain","required":true},"message":{"type":"string","description":"A message to include with notifications for this synthetics test. Email notifications can be sent to specific users by using the same `@username` notation as events. Defaults to `\"\"`.","description_kind":"plain","optional":true},"monitor_id":{"type":"number","description":"ID of the monitor associated with the Datadog synthetics test.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of Datadog synthetics test.","description_kind":"plain","required":true},"request_headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"request_metadata":{"type":["map","string"],"description":"Metadata to include when performing the gRPC test.","description_kind":"plain","optional":true},"request_query":{"type":["map","string"],"description":"Query arguments name and value map.","description_kind":"plain","optional":true},"set_cookie":{"type":"string","description":"Cookies to be used for a browser test request, using the [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) syntax.","description_kind":"plain","optional":true},"status":{"type":"string","description":"Define whether you want to start (`live`) or pause (`paused`) a Synthetic test. Valid values are `live`, `paused`.","description_kind":"plain","required":true},"subtype":{"type":"string","description":"The subtype of the Synthetic API test. Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, `multi`, `icmp`, `udp`, `websocket`, `grpc`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to associate with your synthetics test. This can help you categorize and filter tests in the manage synthetics page of the UI. Default is an empty list (`[]`).","description_kind":"plain","optional":true},"type":{"type":"string","description":"Synthetics test type. Valid values are `api`, `browser`.","description_kind":"plain","required":true}},"block_types":{"api_step":{"nesting_mode":"list","block":{"attributes":{"allow_failure":{"type":"bool","description":"Determines whether or not to continue with test if this step fails.","description_kind":"plain","optional":true},"is_critical":{"type":"bool","description":"Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the step.","description_kind":"plain","required":true},"request_headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"request_query":{"type":["map","string"],"description":"Query arguments name and value map.","description_kind":"plain","optional":true},"subtype":{"type":"string","description":"The subtype of the Synthetic multistep API test step. Valid values are `http`. Defaults to `\"http\"`.","description_kind":"plain","optional":true}},"block_types":{"assertion":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"Assertion operator. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)).","description_kind":"plain","required":true},"property":{"type":"string","description":"If assertion type is `header`, this is the header name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details.","description_kind":"plain","optional":true},"timings_scope":{"type":"string","description":"Timings scope for response time assertions. Valid values are `all`, `withoutDNS`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of assertion. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)). Valid values are `body`, `header`, `statusCode`, `certificate`, `responseTime`, `property`, `recordEvery`, `recordSome`, `tlsVersion`, `minTlsVersion`, `latency`, `packetLossPercentage`, `packetsReceived`, `networkHop`, `receivedMessage`, `grpcHealthcheckStatus`, `grpcMetadata`, `grpcProto`, `connection`.","description_kind":"plain","required":true}},"block_types":{"targetjsonpath":{"nesting_mode":"list","block":{"attributes":{"jsonpath":{"type":"string","description":"The JSON path to assert.","description_kind":"plain","required":true},"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true}},"description":"Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"targetxpath":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true},"xpath":{"type":"string","description":"The xpath to assert.","description_kind":"plain","required":true}},"description":"Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1}},"description":"Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below.","description_kind":"plain"}},"extracted_value":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"When type is `http_header`, name of the header to use to extract the value.","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"secure":{"type":"bool","description":"Determines whether or not the extracted value will be obfuscated.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Property of the Synthetics Test Response to use for the variable. Valid values are `http_body`, `http_header`, `local_variable`.","description_kind":"plain","required":true}},"block_types":{"parser":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Regex or JSON path used for the parser. Not used with type `raw`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Values to parse and save as variables from the response.","description_kind":"plain"}},"request_basicauth":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description":"Access key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"access_token_url":{"type":"string","description":"Access token url for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"audience":{"type":"string","description":"Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"client_id":{"type":"string","description":"Client ID for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"client_secret":{"type":"string","description":"Client secret for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true,"sensitive":true},"domain":{"type":"string","description":"Domain for `ntlm` authentication.","description_kind":"plain","optional":true},"password":{"type":"string","description":"Password for authentication.","description_kind":"plain","optional":true,"sensitive":true},"region":{"type":"string","description":"Region for `SIGV4` authentication.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"scope":{"type":"string","description":"Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"secret_key":{"type":"string","description":"Secret key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"service_name":{"type":"string","description":"Service name for `SIGV4` authentication.","description_kind":"plain","optional":true},"session_token":{"type":"string","description":"Session token for `SIGV4` authentication.","description_kind":"plain","optional":true},"token_api_authentication":{"type":"string","description":"Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of basic authentication to use when performing the test. Defaults to `\"web\"`.","description_kind":"plain","optional":true},"username":{"type":"string","description":"Username for authentication.","description_kind":"plain","optional":true},"workstation":{"type":"string","description":"Workstation for `ntlm` authentication.","description_kind":"plain","optional":true}},"description":"The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_client_certificate":{"nesting_mode":"list","block":{"block_types":{"cert":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"key":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_definition":{"nesting_mode":"list","block":{"attributes":{"allow_insecure":{"type":"bool","description":"Allows loading insecure content for an HTTP request in an API test or in a multistep API test step.","description_kind":"plain","optional":true},"body":{"type":"string","description":"The request body.","description_kind":"plain","optional":true},"body_type":{"type":"string","description":"Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`.","description_kind":"plain","optional":true},"call_type":{"type":"string","description":"The type of gRPC call to perform. Valid values are `healthcheck`, `unary`.","description_kind":"plain","optional":true},"certificate_domains":{"type":["list","string"],"description":"By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in `certificate_domains`.","description_kind":"plain","optional":true},"dns_server":{"type":"string","description":"DNS server to use for DNS tests (`subtype = \"dns\"`).","description_kind":"plain","optional":true},"dns_server_port":{"type":"number","description":"DNS server port to use for DNS tests.","description_kind":"plain","optional":true},"follow_redirects":{"type":"bool","description":"Determines whether or not the API HTTP test should follow redirects.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host name to perform the test with.","description_kind":"plain","optional":true},"message":{"type":"string","description":"For UDP and websocket tests, message to send with the request.","description_kind":"plain","optional":true},"method":{"type":"string","description":"Either the HTTP method/verb to use or a gRPC method available on the service set in the `service` field. Required if `subtype` is `HTTP` or if `subtype` is `grpc` and `callType` is `unary`.","description_kind":"plain","optional":true},"no_saving_response_body":{"type":"bool","description":"Determines whether or not to save the response body.","description_kind":"plain","optional":true},"number_of_packets":{"type":"number","description":"Number of pings to use per test for ICMP tests (`subtype = \"icmp\"`) between 0 and 10.","description_kind":"plain","optional":true},"persist_cookies":{"type":"bool","description":"Persist cookies across redirects.","description_kind":"plain","optional":true},"port":{"type":"number","description":"Port to use when performing the test.","description_kind":"plain","optional":true},"proto_json_descriptor":{"type":"string","description":"A protobuf JSON descriptor.","description_kind":"plain","optional":true},"servername":{"type":"string","description":"For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number.","description_kind":"plain","optional":true},"service":{"type":"string","description":"The gRPC service on which you want to perform the gRPC call.","description_kind":"plain","optional":true},"should_track_hops":{"type":"bool","description":"This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = \"icmp\"`).","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"Timeout in seconds for the test. Defaults to `60`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to send the request to.","description_kind":"plain","optional":true}},"description":"The request for the api step.","description_kind":"plain"},"max_items":1},"request_proxy":{"nesting_mode":"list","block":{"attributes":{"headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"url":{"type":"string","description":"URL of the proxy to perform the test.","description_kind":"plain","required":true}},"description":"The proxy to perform the test.","description_kind":"plain"},"max_items":1},"retry":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Interval between a failed test and the next retry in milliseconds. Defaults to `300`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description":"Steps for multistep api tests","description_kind":"plain"}},"assertion":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"Assertion operator. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)).","description_kind":"plain","required":true},"property":{"type":"string","description":"If assertion type is `header`, this is the header name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details.","description_kind":"plain","optional":true},"timings_scope":{"type":"string","description":"Timings scope for response time assertions. Valid values are `all`, `withoutDNS`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of assertion. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)). Valid values are `body`, `header`, `statusCode`, `certificate`, `responseTime`, `property`, `recordEvery`, `recordSome`, `tlsVersion`, `minTlsVersion`, `latency`, `packetLossPercentage`, `packetsReceived`, `networkHop`, `receivedMessage`, `grpcHealthcheckStatus`, `grpcMetadata`, `grpcProto`, `connection`.","description_kind":"plain","required":true}},"block_types":{"targetjsonpath":{"nesting_mode":"list","block":{"attributes":{"jsonpath":{"type":"string","description":"The JSON path to assert.","description_kind":"plain","required":true},"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true}},"description":"Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"targetxpath":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true},"xpath":{"type":"string","description":"The xpath to assert.","description_kind":"plain","required":true}},"description":"Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1}},"description":"Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below.","description_kind":"plain"}},"browser_step":{"nesting_mode":"list","block":{"attributes":{"allow_failure":{"type":"bool","description":"Determines if the step should be allowed to fail.","description_kind":"plain","optional":true},"force_element_update":{"type":"bool","description":"Force update of the \"element\" parameter for the step","description_kind":"plain","optional":true},"is_critical":{"type":"bool","description":"Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the step.","description_kind":"plain","required":true},"no_screenshot":{"type":"bool","description":"Prevents saving screenshots of the step.","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"Used to override the default timeout of a step.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`.","description_kind":"plain","required":true}},"block_types":{"params":{"nesting_mode":"list","block":{"attributes":{"attribute":{"type":"string","description":"Name of the attribute to use for an \"assert attribute\" step.","description_kind":"plain","optional":true},"check":{"type":"string","description":"Check type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`.","description_kind":"plain","optional":true},"click_type":{"type":"string","description":"Type of click to use for a \"click\" step.","description_kind":"plain","optional":true},"code":{"type":"string","description":"Javascript code to use for the step.","description_kind":"plain","optional":true},"delay":{"type":"number","description":"Delay between each key stroke for a \"type test\" step.","description_kind":"plain","optional":true},"element":{"type":"string","description":"Element to use for the step, json encoded string.","description_kind":"plain","optional":true},"email":{"type":"string","description":"Details of the email for an \"assert email\" step.","description_kind":"plain","optional":true},"file":{"type":"string","description":"JSON encoded string used for an \"assert download\" step. Refer to the examples for a usage example showing the schema.","description_kind":"plain","optional":true},"files":{"type":"string","description":"Details of the files for an \"upload files\" step, json encoded string.","description_kind":"plain","optional":true},"modifiers":{"type":["list","string"],"description":"Modifier to use for a \"press key\" step.","description_kind":"plain","optional":true},"playing_tab_id":{"type":"string","description":"ID of the tab to play the subtest.","description_kind":"plain","optional":true},"request":{"type":"string","description":"Request for an API step.","description_kind":"plain","optional":true},"subtest_public_id":{"type":"string","description":"ID of the Synthetics test to use as subtest.","description_kind":"plain","optional":true},"value":{"type":"string","description":"Value of the step.","description_kind":"plain","optional":true},"with_click":{"type":"bool","description":"For \"file upload\" steps.","description_kind":"plain","optional":true},"x":{"type":"number","description":"X coordinates for a \"scroll step\".","description_kind":"plain","optional":true},"y":{"type":"number","description":"Y coordinates for a \"scroll step\".","description_kind":"plain","optional":true}},"block_types":{"element_user_locator":{"nesting_mode":"list","block":{"attributes":{"fail_test_on_cannot_locate":{"type":"bool","description":"Defaults to `false`.","description_kind":"plain","optional":true}},"block_types":{"value":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Defaults to `\"css\"`.","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Custom user selector to use for the step.","description_kind":"plain"},"max_items":1},"variable":{"nesting_mode":"list","block":{"attributes":{"example":{"type":"string","description":"Example of the extracted variable. Defaults to `\"\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the extracted variable.","description_kind":"plain","optional":true}},"description":"Details of the variable to extract.","description_kind":"plain"},"max_items":1}},"description":"Parameters for the step.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Steps for browser tests.","description_kind":"plain"}},"browser_variable":{"nesting_mode":"list","block":{"attributes":{"example":{"type":"string","description":"Example for the variable. Defaults to `\"\"`.","description_kind":"plain","optional":true},"id":{"type":"string","description":"ID of the global variable to use. This is actually only used (and required) in the case of using a variable of type `global`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the variable.","description_kind":"plain","required":true},"pattern":{"type":"string","description":"Pattern of the variable. Defaults to `\"\"`.","description_kind":"plain","optional":true},"secure":{"type":"bool","description":"Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text`","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of browser test variable. Valid values are `element`, `email`, `global`, `javascript`, `text`.","description_kind":"plain","required":true}},"description":"Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below.","description_kind":"plain"}},"config_variable":{"nesting_mode":"list","block":{"attributes":{"example":{"type":"string","description":"Example for the variable. This value is not returned by the api when `secure = true`. Avoid drift by only making updates to this value from within Terraform.","description_kind":"plain","optional":true},"id":{"type":"string","description":"When type = `global`, ID of the global variable to use.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the variable.","description_kind":"plain","required":true},"pattern":{"type":"string","description":"Pattern of the variable. This value is not returned by the api when `secure = true`. Avoid drift by only making updates to this value from within Terraform.","description_kind":"plain","optional":true},"secure":{"type":"bool","description":"Whether the value of this variable will be obfuscated in test results. Defaults to `false`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of test configuration variable. Valid values are `global`, `text`.","description_kind":"plain","required":true}},"description":"Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below.","description_kind":"plain"}},"options_list":{"nesting_mode":"list","block":{"attributes":{"accept_self_signed":{"type":"bool","description":"For SSL test, whether or not the test should allow self signed certificates.","description_kind":"plain","optional":true},"allow_insecure":{"type":"bool","description":"Allows loading insecure content for an HTTP request in an API test or in a multistep API test step.","description_kind":"plain","optional":true},"check_certificate_revocation":{"type":"bool","description":"For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP.","description_kind":"plain","optional":true},"disable_cors":{"type":"bool","description":"Disable Cross-Origin Resource Sharing for browser tests.","description_kind":"plain","optional":true},"disable_csp":{"type":"bool","description":"Disable Content Security Policy for browser tests.","description_kind":"plain","optional":true},"follow_redirects":{"type":"bool","description":"Determines whether or not the API HTTP test should follow redirects.","description_kind":"plain","optional":true},"http_version":{"type":"string","description":"HTTP version to use for a Synthetics API test. Valid values are `http1`, `http2`, `any`.","description_kind":"plain","optional":true},"ignore_server_certificate_error":{"type":"bool","description":"Ignore server certificate error for browser tests.","description_kind":"plain","optional":true},"initial_navigation_timeout":{"type":"number","description":"Timeout before declaring the initial step as failed (in seconds) for browser tests.","description_kind":"plain","optional":true},"min_failure_duration":{"type":"number","description":"Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`.","description_kind":"plain","optional":true},"min_location_failed":{"type":"number","description":"Minimum number of locations in failure required to trigger an alert. Defaults to `1`.","description_kind":"plain","optional":true},"monitor_name":{"type":"string","description":"The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs.","description_kind":"plain","optional":true},"monitor_priority":{"type":"number","description_kind":"plain","optional":true},"no_screenshot":{"type":"bool","description":"Prevents saving screenshots of the steps.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"A list of role identifiers pulled from the Roles API to restrict read and write access.","description_kind":"plain","optional":true},"tick_every":{"type":"number","description":"How often the test should run (in seconds).","description_kind":"plain","required":true}},"block_types":{"ci":{"nesting_mode":"list","block":{"attributes":{"execution_rule":{"type":"string","description":"Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`.","description_kind":"plain","optional":true}},"description":"CI/CD options for a Synthetic test.","description_kind":"plain"},"max_items":1},"monitor_options":{"nesting_mode":"list","block":{"attributes":{"renotify_interval":{"type":"number","description":"Specify a renotification frequency in minutes. Values available by default are `0`, `10`, `20`, `30`, `40`, `50`, `60`, `90`, `120`, `180`, `240`, `300`, `360`, `720`, `1440`. Defaults to `0`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"retry":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Interval between a failed test and the next retry in milliseconds. Defaults to `300`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"rum_settings":{"nesting_mode":"list","block":{"attributes":{"application_id":{"type":"string","description":"RUM application ID used to collect RUM data for the browser test.","description_kind":"plain","optional":true},"client_token_id":{"type":"number","description":"RUM application API key ID used to collect RUM data for the browser test.","description_kind":"plain","optional":true,"sensitive":true},"is_enabled":{"type":"bool","description":"Determines whether RUM data is collected during test runs.","description_kind":"plain","required":true}},"description":"The RUM data collection settings for the Synthetic browser test.","description_kind":"plain"},"max_items":1},"scheduling":{"nesting_mode":"list","block":{"attributes":{"timezone":{"type":"string","description":"Timezone in which the timeframe is based.","description_kind":"plain","required":true}},"block_types":{"timeframes":{"nesting_mode":"set","block":{"attributes":{"day":{"type":"number","description":"Number representing the day of the week","description_kind":"plain","required":true},"from":{"type":"string","description":"The hour of the day on which scheduling starts.","description_kind":"plain","required":true},"to":{"type":"string","description":"The hour of the day on which scheduling ends.","description_kind":"plain","required":true}},"description":"Array containing objects describing the scheduling pattern to apply to each day.","description_kind":"plain"},"min_items":1}},"description":"Object containing timeframes and timezone used for advanced scheduling.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"request_basicauth":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description":"Access key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"access_token_url":{"type":"string","description":"Access token url for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"audience":{"type":"string","description":"Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"client_id":{"type":"string","description":"Client ID for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"client_secret":{"type":"string","description":"Client secret for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true,"sensitive":true},"domain":{"type":"string","description":"Domain for `ntlm` authentication.","description_kind":"plain","optional":true},"password":{"type":"string","description":"Password for authentication.","description_kind":"plain","optional":true,"sensitive":true},"region":{"type":"string","description":"Region for `SIGV4` authentication.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"scope":{"type":"string","description":"Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"secret_key":{"type":"string","description":"Secret key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"service_name":{"type":"string","description":"Service name for `SIGV4` authentication.","description_kind":"plain","optional":true},"session_token":{"type":"string","description":"Session token for `SIGV4` authentication.","description_kind":"plain","optional":true},"token_api_authentication":{"type":"string","description":"Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of basic authentication to use when performing the test. Defaults to `\"web\"`.","description_kind":"plain","optional":true},"username":{"type":"string","description":"Username for authentication.","description_kind":"plain","optional":true},"workstation":{"type":"string","description":"Workstation for `ntlm` authentication.","description_kind":"plain","optional":true}},"description":"The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_client_certificate":{"nesting_mode":"list","block":{"block_types":{"cert":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"key":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_definition":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description":"The request body.","description_kind":"plain","optional":true},"body_type":{"type":"string","description":"Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`.","description_kind":"plain","optional":true},"call_type":{"type":"string","description":"The type of gRPC call to perform. Valid values are `healthcheck`, `unary`.","description_kind":"plain","optional":true},"certificate_domains":{"type":["list","string"],"description":"By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in `certificate_domains`.","description_kind":"plain","optional":true},"dns_server":{"type":"string","description":"DNS server to use for DNS tests (`subtype = \"dns\"`).","description_kind":"plain","optional":true},"dns_server_port":{"type":"number","description":"DNS server port to use for DNS tests.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host name to perform the test with.","description_kind":"plain","optional":true},"message":{"type":"string","description":"For UDP and websocket tests, message to send with the request.","description_kind":"plain","optional":true},"method":{"type":"string","description":"Either the HTTP method/verb to use or a gRPC method available on the service set in the `service` field. Required if `subtype` is `HTTP` or if `subtype` is `grpc` and `callType` is `unary`.","description_kind":"plain","optional":true},"no_saving_response_body":{"type":"bool","description":"Determines whether or not to save the response body.","description_kind":"plain","optional":true},"number_of_packets":{"type":"number","description":"Number of pings to use per test for ICMP tests (`subtype = \"icmp\"`) between 0 and 10.","description_kind":"plain","optional":true},"persist_cookies":{"type":"bool","description":"Persist cookies across redirects.","description_kind":"plain","optional":true},"port":{"type":"number","description":"Port to use when performing the test.","description_kind":"plain","optional":true},"proto_json_descriptor":{"type":"string","description":"A protobuf JSON descriptor.","description_kind":"plain","optional":true},"servername":{"type":"string","description":"For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number.","description_kind":"plain","optional":true},"service":{"type":"string","description":"The gRPC service on which you want to perform the gRPC call.","description_kind":"plain","optional":true},"should_track_hops":{"type":"bool","description":"This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = \"icmp\"`).","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"Timeout in seconds for the test. Defaults to `60`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to send the request to.","description_kind":"plain","optional":true}},"description":"Required if `type = \"api\"`. The synthetics test request.","description_kind":"plain"},"max_items":1},"request_proxy":{"nesting_mode":"list","block":{"attributes":{"headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"url":{"type":"string","description":"URL of the proxy to perform the test.","description_kind":"plain","required":true}},"description":"The proxy to perform the test.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog synthetics test resource. This can be used to create and manage Datadog synthetics test.","description_kind":"plain"}},"datadog_team":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Free-form markdown description/content for the team's homepage.","description_kind":"plain","required":true},"handle":{"type":"string","description":"The team's identifier","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"link_count":{"type":"number","description":"The number of links belonging to the team.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the team.","description_kind":"plain","required":true},"summary":{"type":"string","description":"A brief summary of the team, derived from the `description`.","description_kind":"plain","computed":true},"user_count":{"type":"number","description":"The number of users belonging to the team.","description_kind":"plain","computed":true}},"description":"Provides a Datadog Team resource. This can be used to create and manage Datadog team.","description_kind":"plain"}},"datadog_team_link":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"label":{"type":"string","description":"The link's label.","description_kind":"plain","required":true},"position":{"type":"number","description":"The link's position, used to sort links for the team.","description_kind":"plain","optional":true,"computed":true},"team_id":{"type":"string","description":"ID of the team the link is associated with.","description_kind":"plain","required":true},"url":{"type":"string","description":"The URL for the link.","description_kind":"plain","required":true}},"description":"Provides a Datadog TeamLink resource. This can be used to create and manage Datadog team_link.","description_kind":"plain"}},"datadog_team_membership":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"role":{"type":"string","description":"The user's role within the team. Valid values are `admin`.","description_kind":"plain","optional":true},"team_id":{"type":"string","description":"ID of the team the team membership is associated with.","description_kind":"plain","required":true},"user_id":{"type":"string","description":"The ID of the user.","description_kind":"plain","required":true}},"description":"Provides a Datadog TeamMembership resource. This can be used to create and manage Datadog team_membership.","description_kind":"plain"}},"datadog_team_permission_setting":{"version":0,"block":{"attributes":{"action":{"type":"string","description":"The identifier for the action. Valid values are `manage_membership`, `edit`.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"team_id":{"type":"string","description":"ID of the team the team permission setting is associated with.","description_kind":"plain","required":true},"value":{"type":"string","description":"The action value. Valid values are `admins`, `members`, `organization`, `user_access_manage`, `teams_manage`.","description_kind":"plain","required":true}},"description":"Provides a Datadog TeamPermissionSetting resource. This can be used to manage Datadog team_permission_setting.","description_kind":"plain"}},"datadog_user":{"version":0,"block":{"attributes":{"disabled":{"type":"bool","description":"Whether the user is disabled. Defaults to `false`.","description_kind":"plain","optional":true},"email":{"type":"string","description":"Email address for user.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name for user.","description_kind":"plain","optional":true},"roles":{"type":["set","string"],"description":"A list a role IDs to assign to the user.","description_kind":"plain","optional":true},"send_user_invitation":{"type":"bool","description":"Whether an invitation email should be sent when the user is created. Defaults to `true`.","description_kind":"plain","optional":true},"user_invitation_id":{"type":"string","description":"The ID of the user invitation that was sent when creating the user.","description_kind":"plain","computed":true},"verified":{"type":"bool","description":"Returns `true` if the user is verified.","description_kind":"plain","computed":true}},"description":"Provides a Datadog user resource. This can be used to create and manage Datadog users.","description_kind":"plain"}},"datadog_webhook":{"version":0,"block":{"attributes":{"custom_headers":{"type":"string","description":"The headers attached to the webhook.","description_kind":"plain","optional":true},"encode_as":{"type":"string","description":"Encoding type. Valid values are `json`, `form`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the webhook. It corresponds with `\u003cWEBHOOK_NAME\u003e`.","description_kind":"plain","required":true},"payload":{"type":"string","description":"The payload of the webhook.","description_kind":"plain","optional":true,"computed":true},"url":{"type":"string","description":"The URL of the webhook.","description_kind":"plain","required":true}},"description":"Provides a Datadog webhook resource. This can be used to create and manage Datadog webhooks.","description_kind":"plain"}},"datadog_webhook_custom_variable":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_secret":{"type":"bool","description":"Whether the custom variable is secret or not.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the variable. It corresponds with `\u003cCUSTOM_VARIABLE_NAME\u003e`.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the custom variable.","description_kind":"plain","required":true,"sensitive":true}},"description":"Provides a Datadog webhooks custom variable resource. This can be used to create and manage Datadog webhooks custom variables.","description_kind":"plain"}}},"data_source_schemas":{"datadog_api_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","optional":true},"key":{"type":"string","description":"The value of the API Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for API Key.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about an existing api key.","description_kind":"plain"}},"datadog_apm_retention_filters_order":{"version":0,"block":{"attributes":{"filter_ids":{"type":["list","string"],"description":"The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog [APM Retention Filters API](https://docs.datadoghq.com/api/v2/apm-retention-filters/) order datasource. This can be used to retrieve APM retention filters order.","description_kind":"plain"}},"datadog_application_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"Id for Application Key.","description_kind":"plain","optional":true},"key":{"type":"string","description":"The value of the Application Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for Application Key.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about an existing application key.","description_kind":"plain"}},"datadog_cloud_workload_security_agent_rules":{"version":0,"block":{"attributes":{"agent_rules":{"type":["list",["object",{"description":"string","enabled":"bool","expression":"string","id":"string","name":"string"}]],"description":"List of Agent rules.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to retrieve information about existing Cloud Workload Security Agent Rules for use in other resources.","description_kind":"plain"}},"datadog_dashboard":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The dashboard name to search for. Must only match one dashboard.","description_kind":"plain","required":true},"title":{"type":"string","description":"The name of the dashboard.","description_kind":"plain","computed":true},"url":{"type":"string","description":"The URL to a specific dashboard.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing dashboard, for use in other resources. In particular, it can be used in a monitor message to link to a specific dashboard.","description_kind":"plain"}},"datadog_dashboard_list":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"A dashboard list name to limit the search.","description_kind":"plain","required":true}},"description":"Use this data source to retrieve information about an existing dashboard list, for use in other resources. In particular, it can be used in a dashboard to register it in the list.","description_kind":"plain"}},"datadog_hosts":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"String to filter search results.","description_kind":"plain","optional":true},"from":{"type":"number","description":"Number of seconds since UNIX epoch from which you want to search your hosts.","description_kind":"plain","optional":true},"host_list":{"type":["list",["object",{"aliases":["list","string"],"apps":["list","string"],"aws_name":"string","host_name":"string","id":"number","is_muted":"bool","last_reported_time":"number","meta":["object",{"agent_version":"string","cpu_cores":"number","gohai":"string","machine":"string","platform":"string","processor":"string","python_version":"string","socket_fqdn":"string","socket_hostname":"string"}],"metrics":["object",{"cpu":"number","iowait":"number","load":"number"}],"mute_timeout":"number","name":"string","sources":["list","string"],"up":"bool"}]],"description":"List of hosts (1000 Max).","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"include_muted_hosts_data":{"type":"bool","description":"Include information on the muted status of hosts and when the mute expires.","description_kind":"plain","optional":true},"sort_dir":{"type":"string","description":"Direction of sort.","description_kind":"plain","optional":true},"sort_field":{"type":"string","description":"Sort hosts by this field.","description_kind":"plain","optional":true},"total_matching":{"type":"number","description":"Number of host matching the query.","description_kind":"plain","computed":true},"total_returned":{"type":"number","description":"Number of host returned.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about your live hosts in Datadog.","description_kind":"plain"}},"datadog_integration_aws_logs_services":{"version":0,"block":{"attributes":{"aws_logs_services":{"type":["list",["object",{"id":"string","label":"string"}]],"description":"List of AWS log ready services.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to retrieve all AWS log ready services.","description_kind":"plain"}},"datadog_integration_aws_namespace_rules":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"namespace_rules":{"type":["list","string"],"description":"The list of available namespace rules for a Datadog-AWS integration.","description_kind":"plain","computed":true}},"description":"Provides a Datadog AWS Integration Namespace Rules data source. This can be used to retrieve all available namespace rules for a Datadog-AWS integration.","description_kind":"plain"}},"datadog_ip_ranges":{"version":0,"block":{"attributes":{"agents_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Agent endpoint.","description_kind":"plain","computed":true},"agents_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Agent endpoint.","description_kind":"plain","computed":true},"api_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the API endpoint.","description_kind":"plain","computed":true},"api_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the API endpoint.","description_kind":"plain","computed":true},"apm_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the APM endpoint.","description_kind":"plain","computed":true},"apm_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the APM endpoint.","description_kind":"plain","computed":true},"global_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for all Datadog endpoints.","description_kind":"plain","computed":true},"global_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for all Datadog endpoints.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"logs_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Logs endpoint.","description_kind":"plain","computed":true},"logs_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Logs endpoint.","description_kind":"plain","computed":true},"orchestrator_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Orchestrator endpoint.","description_kind":"plain","computed":true},"orchestrator_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Orchestrator endpoint.","description_kind":"plain","computed":true},"process_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Process endpoint.","description_kind":"plain","computed":true},"process_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Process endpoint.","description_kind":"plain","computed":true},"synthetics_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Synthetics endpoint.","description_kind":"plain","computed":true},"synthetics_ipv4_by_location":{"type":["map","string"],"description":"A map of IPv4 prefixes (string of concatenated IPs, delimited by ',') by location.","description_kind":"plain","computed":true},"synthetics_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Synthetics endpoint.","description_kind":"plain","computed":true},"synthetics_ipv6_by_location":{"type":["map","string"],"description":"A map of IPv6 prefixes (string of concatenated IPs, delimited by ',') by location.","description_kind":"plain","computed":true},"webhooks_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Webhooks endpoint.","description_kind":"plain","computed":true},"webhooks_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Webhooks endpoint.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about Datadog's IP addresses.","description_kind":"plain"}},"datadog_logs_archives_order":{"version":0,"block":{"attributes":{"archive_ids":{"type":["list","string"],"description":"The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Get the current order of your logs archives.","description_kind":"plain"}},"datadog_logs_indexes":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"logs_indexes":{"type":["list",["object",{"daily_limit":"number","exclusion_filter":["list",["object",{"filter":["list",["object",{"query":"string","sample_rate":"number"}]],"is_enabled":"bool","name":"string"}]],"filter":["list",["object",{"query":"string"}]],"name":"string","retention_days":"number"}]],"description":"List of logs indexes","description_kind":"plain","computed":true}},"description":"Use this data source to list several existing logs indexes for use in other resources.","description_kind":"plain"}},"datadog_logs_indexes_order":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"index_names":{"type":["list","string"],"description":"Array of strings identifying by their name(s) the index(es) of your organization. Logs are tested against the query filter of each index one by one, following the order of the array. Logs are eventually stored in the first matching index.","description_kind":"plain","computed":true}},"description":"Get the current order of your log indexes.","description_kind":"plain"}},"datadog_logs_pipelines":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_read_only":{"type":"string","description":"Filter parameter for retrieved pipelines","description_kind":"plain","optional":true},"logs_pipelines":{"type":["list",["object",{"filter":["list",["object",{"query":"string"}]],"id":"string","is_enabled":"bool","is_read_only":"bool","name":"string","type":"string"}]],"description":"List of logs pipelines","description_kind":"plain","computed":true}},"description":"Use this data source to list all existing logs pipelines for use in other resources.","description_kind":"plain"}},"datadog_monitor":{"version":0,"block":{"attributes":{"enable_logs_sample":{"type":"bool","description":"Whether or not a list of log values which triggered the alert is included. This is only used by log monitors.","description_kind":"plain","computed":true},"enable_samples":{"type":"bool","description":"Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors.","description_kind":"plain","computed":true},"escalation_message":{"type":"string","description":"Message included with a re-notification for this monitor.","description_kind":"plain","computed":true},"evaluation_delay":{"type":"number","description":"Time (in seconds) for which evaluation is delayed. This is only used by metric monitors.","description_kind":"plain","computed":true},"group_retention_duration":{"type":"string","description":"The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.","description_kind":"plain","computed":true},"groupby_simple_monitor":{"type":"bool","description":"Whether or not to trigger one alert if any source breaches a threshold.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_tags":{"type":"bool","description":"Whether or not notifications from the monitor automatically inserts its triggering tags into the title.","description_kind":"plain","computed":true},"locked":{"type":"bool","description":"Whether or not changes to the monitor are restricted to the creator or admins.","description_kind":"plain","computed":true},"message":{"type":"string","description":"Message included with notifications for this monitor","description_kind":"plain","computed":true},"monitor_tags_filter":{"type":["list","string"],"description":"A list of monitor tags to limit the search. This filters on the tags set on the monitor itself.","description_kind":"plain","optional":true},"monitor_threshold_windows":{"type":["list",["object",{"recovery_window":"string","trigger_window":"string"}]],"description":"Mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m`. This is only used by anomaly monitors.","description_kind":"plain","computed":true},"monitor_thresholds":{"type":["list",["object",{"critical":"string","critical_recovery":"string","ok":"string","unknown":"string","warning":"string","warning_recovery":"string"}]],"description":"Alert thresholds of the monitor.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the monitor","description_kind":"plain","computed":true},"name_filter":{"type":"string","description":"A monitor name to limit the search.","description_kind":"plain","optional":true},"new_group_delay":{"type":"number","description":"Time (in seconds) to skip evaluations for new groups.","description_kind":"plain","computed":true},"new_host_delay":{"type":"number","description":"Time (in seconds) allowing a host to boot and applications to fully start before starting the evaluation of monitor results.","description_kind":"plain","computed":true},"no_data_timeframe":{"type":"number","description":"The number of minutes before the monitor notifies when data stops reporting.","description_kind":"plain","computed":true},"notification_preset_name":{"type":"string","description":"Toggles the display of additional content sent in the monitor notification. Valid values are: `show_all`, `hide_query`, `hide_handles`, and `hide_all`.","description_kind":"plain","computed":true},"notify_audit":{"type":"bool","description":"Whether or not tagged users are notified on changes to the monitor.","description_kind":"plain","computed":true},"notify_by":{"type":["set","string"],"description":"Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert.","description_kind":"plain","computed":true},"notify_no_data":{"type":"bool","description":"Whether or not this monitor notifies when data stops reporting.","description_kind":"plain","computed":true},"on_missing_data":{"type":"string","description":"Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`.","description_kind":"plain","computed":true},"query":{"type":"string","description":"Query of the monitor.","description_kind":"plain","computed":true},"renotify_interval":{"type":"number","description":"The number of minutes after the last notification before the monitor re-notifies on the current status.","description_kind":"plain","computed":true},"renotify_occurrences":{"type":"number","description":"The number of re-notification messages that should be sent on the current status.","description_kind":"plain","computed":true},"renotify_statuses":{"type":["set","string"],"description":"The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`.","description_kind":"plain","computed":true},"require_full_window":{"type":"bool","description":"Whether or not the monitor needs a full window of data before it is evaluated.","description_kind":"plain","computed":true},"restricted_roles":{"type":["set","string"],"description_kind":"plain","computed":true},"scheduling_options":{"type":["list",["object",{"custom_schedule":["list",["object",{"recurrence":["set",["object",{"rrule":"string","start":"string","timezone":"string"}]]}]],"evaluation_window":["list",["object",{"day_starts":"string","hour_starts":"number","month_starts":"number"}]]}]],"description":"Configuration options for scheduling.","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"List of tags associated with the monitor.","description_kind":"plain","computed":true},"tags_filter":{"type":["list","string"],"description":"A list of tags to limit the search. This filters on the monitor scope.","description_kind":"plain","optional":true},"timeout_h":{"type":"number","description":"Number of hours of the monitor not reporting data before it automatically resolves from a triggered state.","description_kind":"plain","computed":true},"type":{"type":"string","description":"Type of the monitor.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing monitor for use in other resources.","description_kind":"plain"}},"datadog_monitor_config_policies":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor_config_policies":{"type":["list",["object",{"id":"string","policy_type":"string","tag_policy":["list",["object",{"tag_key":"string","tag_key_required":"bool","valid_tag_values":["list","string"]}]]}]],"description":"List of monitor config policies","description_kind":"plain","computed":true}},"description":"Use this data source to list existing monitor config policies for use in other resources.","description_kind":"plain"}},"datadog_monitors":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor_tags_filter":{"type":["list","string"],"description":"A list of monitor tags to limit the search. This filters on the tags set on the monitor itself.","description_kind":"plain","optional":true},"monitors":{"type":["list",["object",{"id":"number","name":"string","type":"string"}]],"description":"List of monitors","description_kind":"plain","computed":true},"name_filter":{"type":"string","description":"A monitor name to limit the search.","description_kind":"plain","optional":true},"tags_filter":{"type":["list","string"],"description":"A list of tags to limit the search. This filters on the monitor scope.","description_kind":"plain","optional":true}},"description":"Use this data source to list several existing monitors for use in other resources.","description_kind":"plain"}},"datadog_permissions":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_restricted":{"type":"bool","description":"Whether to include restricted permissions. Restricted permissions are granted by default to all users of a Datadog org, and cannot be manually granted or revoked. Defaults to `false`.","description_kind":"plain","optional":true},"permissions":{"type":["map","string"],"description":"Map of permissions names to their corresponding ID.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve the list of Datadog permissions by name and their corresponding ID, for use in the role resource.","description_kind":"plain"}},"datadog_role":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"A string on which to filter the roles.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role.","description_kind":"plain","computed":true},"user_count":{"type":"number","description":"Number of users assigned to this role.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing role for use in other resources.","description_kind":"plain"}},"datadog_roles":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"Filter all roles by the given string.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"roles":{"type":["list",["object",{"id":"string","name":"string","user_count":"number"}]],"description":"List of Roles","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about multiple roles for use in other resources.","description_kind":"plain"}},"datadog_rum_application":{"version":0,"block":{"attributes":{"client_token":{"type":"string","description":"The client token.","description_kind":"plain","computed":true},"id":{"type":"string","description":"ID of the RUM application. Cannot be used with name and type filters.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the RUM application.","description_kind":"plain","computed":true},"name_filter":{"type":"string","description":"The name used to search for a RUM application.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`.","description_kind":"plain","computed":true},"type_filter":{"type":"string","description":"The type used to search for a RUM application.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve a Datadog RUM Application.","description_kind":"plain"}},"datadog_security_monitoring_filters":{"version":0,"block":{"attributes":{"filters":{"type":["list",["object",{"exclusion_filter":["list",["object",{"name":"string","query":"string"}]],"filtered_data_type":"string","is_enabled":"bool","name":"string","query":"string","version":"number"}]],"description":"List of filters.","description_kind":"plain","computed":true},"filters_ids":{"type":["list","string"],"description":"List of IDs of filters.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to retrieve information about existing security monitoring filters for use in other resources.","description_kind":"plain"}},"datadog_security_monitoring_rules":{"version":0,"block":{"attributes":{"default_only_filter":{"type":"bool","description":"Limit the search to default rules","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name_filter":{"type":"string","description":"A rule name to limit the search","description_kind":"plain","optional":true},"rule_ids":{"type":["list","string"],"description":"List of IDs of the matched rules.","description_kind":"plain","computed":true},"rules":{"type":["list",["object",{"case":["list",["object",{"condition":"string","name":"string","notifications":["list","string"],"status":"string"}]],"enabled":"bool","filter":["list",["object",{"action":"string","query":"string"}]],"has_extended_title":"bool","message":"string","name":"string","options":["list",["object",{"decrease_criticality_based_on_env":"bool","detection_method":"string","evaluation_window":"number","impossible_travel_options":["list",["object",{"baseline_user_locations":"bool"}]],"keep_alive":"number","max_signal_duration":"number","new_value_options":["list",["object",{"forget_after":"number","learning_duration":"number","learning_method":"string","learning_threshold":"number"}]]}]],"query":["list",["object",{"agent_rule":["list",["object",{"agent_rule_id":"string","expression":"string"}]],"aggregation":"string","distinct_fields":["list","string"],"group_by_fields":["list","string"],"metric":"string","metrics":["list","string"],"name":"string","query":"string"}]],"signal_query":["list",["object",{"aggregation":"string","correlated_by_fields":["list","string"],"correlated_query_index":"string","default_rule_id":"string","name":"string","rule_id":"string"}]],"tags":["set","string"],"type":"string"}]],"description":"List of rules.","description_kind":"plain","computed":true},"tags_filter":{"type":["list","string"],"description":"A list of tags to limit the search","description_kind":"plain","optional":true},"user_only_filter":{"type":"bool","description":"Limit the search to user rules","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about existing security monitoring rules for use in other resources.","description_kind":"plain"}},"datadog_sensitive_data_scanner_group_order":{"version":0,"block":{"attributes":{"group_ids":{"type":["list","string"],"description":"The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog Sensitive Data Scanner Group Order API data source. This can be used to retrieve the order of Datadog Sensitive Data Scanner Groups.","description_kind":"plain"}},"datadog_sensitive_data_scanner_standard_pattern":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"Filter all the Datadog standard patterns by name.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the standard pattern.","description_kind":"plain","computed":true},"pattern":{"type":"string","description":"Regex that the standard pattern applies.","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"List of tags.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing sensitive data scanner standard pattern.","description_kind":"plain"}},"datadog_service_account":{"version":0,"block":{"attributes":{"disabled":{"type":"bool","description":"Whether the user is disabled.","description_kind":"plain","computed":true},"email":{"type":"string","description":"Email of the user.","description_kind":"plain","computed":true},"filter":{"type":"string","description":"Filter all users and service accounts by name, email, or role.","description_kind":"plain","optional":true},"filter_status":{"type":"string","description":"Filter on status attribute. Comma separated list, with possible values `Active`, `Pending`, and `Disabled`.","description_kind":"plain","optional":true},"handle":{"type":"string","description":"Handle of the user.","description_kind":"plain","computed":true},"icon":{"type":"string","description":"URL of the user's icon.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The service account's ID.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the user.","description_kind":"plain","computed":true},"roles":{"type":["list","string"],"description":"Roles assigned to this service account.","description_kind":"plain","computed":true},"status":{"type":"string","description":"Status of the user.","description_kind":"plain","computed":true},"title":{"type":"string","description":"Title of the user.","description_kind":"plain","computed":true},"verified":{"type":"bool","description":"Whether the user is verified.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing Datadog service account.","description_kind":"plain"}},"datadog_service_level_objective":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"The description of the service level objective.","description_kind":"plain","computed":true},"id":{"type":"string","description":"A SLO ID to limit the search.","description_kind":"plain","optional":true},"metrics_query":{"type":"string","description":"Filter results based on SLO numerator and denominator.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the Datadog service level objective","description_kind":"plain","computed":true},"name_query":{"type":"string","description":"Filter results based on SLO names.","description_kind":"plain","optional":true},"query":{"type":["list",["object",{"denominator":"string","numerator":"string"}]],"description":"The metric query of good / total events","description_kind":"plain","computed":true},"tags_query":{"type":"string","description":"Filter results based on a single SLO tag.","description_kind":"plain","optional":true},"target_threshold":{"type":"number","description":"The primary target threshold of the service level objective.","description_kind":"plain","computed":true},"timeframe":{"type":"string","description":"The primary timeframe of the service level objective.","description_kind":"plain","computed":true},"type":{"type":"string","description":"The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Available values are: `metric` and `monitor`.","description_kind":"plain","computed":true},"warning_threshold":{"type":"number","description":"The primary warning threshold of the service level objective.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing SLO for use in other resources.","description_kind":"plain"}},"datadog_service_level_objectives":{"version":0,"block":{"attributes":{"error_on_empty_result":{"type":"bool","description":"Throw an error if no results are found. Defaults to `true`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ids":{"type":["list","string"],"description":"An array of SLO IDs to limit the search.","description_kind":"plain","optional":true},"metrics_query":{"type":"string","description":"Filter results based on SLO numerator and denominator.","description_kind":"plain","optional":true},"name_query":{"type":"string","description":"Filter results based on SLO names.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query string to filter results based on SLO names. Some examples of queries include service:\u003cservice-name\u003e and \u003cslo-name\u003e.","description_kind":"plain","optional":true},"slos":{"type":["list",["object",{"id":"string","name":"string","type":"string"}]],"description":"List of SLOs","description_kind":"plain","computed":true},"tags_query":{"type":"string","description":"Filter results based on a single SLO tag.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about multiple SLOs for use in other resources.","description_kind":"plain"}},"datadog_synthetics_global_variable":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The synthetics global variable name to search for. Must only match one global variable.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"A list of tags assigned to the Synthetics global variable.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve a Datadog Synthetics global variable (to be used in Synthetics tests).","description_kind":"plain"}},"datadog_synthetics_locations":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"locations":{"type":["map","string"],"description":"A map of available Synthetics location IDs to names for Synthetics tests.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve Datadog's Synthetics Locations (to be used in Synthetics tests).","description_kind":"plain"}},"datadog_synthetics_test":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the synthetic test.","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"A list of tags assigned to the synthetic test.","description_kind":"plain","computed":true},"test_id":{"type":"string","description":"The synthetic test id or URL to search for","description_kind":"plain","required":true},"url":{"type":"string","description":"The start URL of the synthetic test.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve a Datadog Synthetic Test.","description_kind":"plain"}},"datadog_team":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Free-form markdown description/content for the team's homepage.","description_kind":"plain","computed":true},"filter_keyword":{"type":"string","description":"Search query. Can be team name, team handle, or email of team member.","description_kind":"plain","optional":true},"handle":{"type":"string","description":"The team's handle.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"link_count":{"type":"number","description":"The number of links belonging to the team.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the team.","description_kind":"plain","computed":true},"summary":{"type":"string","description":"A brief summary of the team, derived from the `description`.","description_kind":"plain","computed":true},"team_id":{"type":"string","description":"The team's identifier.","description_kind":"plain","optional":true,"computed":true},"user_count":{"type":"number","description":"The number of users belonging to the team.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing Datadog team.","description_kind":"plain"}},"datadog_team_memberships":{"version":0,"block":{"attributes":{"exact_match":{"type":"bool","description":"When true, `filter_keyword` string is exact matched against the user's `email`, followed by `name`.","description_kind":"plain","optional":true},"filter_keyword":{"type":"string","description":"Search query, can be user email or name.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"team_id":{"type":"string","description":"The team's identifier.","description_kind":"plain","required":true},"team_memberships":{"type":["list",["object",{"id":"string","role":"string","team_id":"string","user_id":"string"}]],"description":"List of team memberships.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about existing Datadog team memberships.","description_kind":"plain"}},"datadog_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"Email of the user.","description_kind":"plain","computed":true},"exact_match":{"type":"bool","description":"When true, `filter` string is exact matched against the user's `email`, followed by `name` attribute. Defaults to `false`.","description_kind":"plain","optional":true},"filter":{"type":"string","description":"Filter all users by the given string.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the user.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing user to use it in an other resources.","description_kind":"plain"}},"datadog_users":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"Filter all users by the given string.","description_kind":"plain","optional":true},"filter_status":{"type":"string","description":"Filter on status attribute. Comma-separated list with possible values of Active, Pending, and Disabled.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"users":{"type":["list",["object",{"email":"string","id":"string","name":"string"}]],"description":"List of users","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about existing users for use in other resources.","description_kind":"plain"}}}}}} diff --git a/config/schema-lose.json b/config/schema-lose.json new file mode 100644 index 0000000..1134ad8 --- /dev/null +++ b/config/schema-lose.json @@ -0,0 +1,87294 @@ +{ + "format_version": "1.0", + "provider_schemas": { + "registry.terraform.io/datadog/datadog": { + "provider": { + "version": 0, + "block": { + "attributes": { + "api_key": { + "type": "string", + "description": "(Required unless validate is false) Datadog API key. This can also be set via the DD_API_KEY environment variable.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "api_url": { + "type": "string", + "description": "The API URL. This can also be set via the DD_HOST environment variable. Note that this URL must not end with the `/api/` path. For example, `https://api.datadoghq.com/` is a correct value, while `https://api.datadoghq.com/api/` is not. And if you're working with \"EU\" version of Datadog, use `https://api.datadoghq.eu/`. Other Datadog region examples: `https://api.us5.datadoghq.com/`, `https://api.us3.datadoghq.com/` and `https://api.ddog-gov.com/`. See https://docs.datadoghq.com/getting_started/site/ for all available regions.", + "description_kind": "plain", + "optional": true + }, + "app_key": { + "type": "string", + "description": "(Required unless validate is false) Datadog APP key. This can also be set via the DD_APP_KEY environment variable.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "http_client_retry_backoff_base": { + "type": "number", + "description": "The HTTP request retry back off base. Defaults to 2.", + "description_kind": "plain", + "optional": true + }, + "http_client_retry_backoff_multiplier": { + "type": "number", + "description": "The HTTP request retry back off multiplier. Defaults to 2.", + "description_kind": "plain", + "optional": true + }, + "http_client_retry_enabled": { + "type": "string", + "description": "Enables request retries on HTTP status codes 429 and 5xx. Valid values are [`true`, `false`]. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "http_client_retry_max_retries": { + "type": "number", + "description": "The HTTP request maximum retry number. Defaults to 3.", + "description_kind": "plain", + "optional": true + }, + "http_client_retry_timeout": { + "type": "number", + "description": "The HTTP request retry timeout period. Defaults to 60 seconds.", + "description_kind": "plain", + "optional": true + }, + "validate": { + "type": "string", + "description": "Enables validation of the provided API key during provider initialization. Valid values are [`true`, `false`]. Default is true. When false, api_key won't be checked.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "resource_schemas": { + "datadog_api_key": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "key": { + "type": "string", + "description": "The value of the API Key.", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "name": { + "type": "string", + "description": "Name for API Key.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog API Key resource. This can be used to create and manage Datadog API Keys.", + "description_kind": "plain" + } + }, + "datadog_apm_retention_filter": { + "version": 0, + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "the status of the retention filter.", + "description_kind": "plain", + "required": true + }, + "filter_type": { + "type": "string", + "description": "The type of the retention filter, currently only spans-processing-sampling is available. Valid values are `spans-sampling-processor`.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the retention filter.", + "description_kind": "plain", + "required": true + }, + "rate": { + "type": "string", + "description": "Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "single", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The search query - following the span search syntax. Defaults to `\"*\"`.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The spans filter. Spans matching this filter will be indexed and stored.", + "description_kind": "plain" + } + } + }, + "description": "The object describing the configuration of the retention filter to create/update.", + "description_kind": "plain" + } + }, + "datadog_apm_retention_filter_order": { + "version": 0, + "block": { + "attributes": { + "filter_ids": { + "type": [ + "list", + "string" + ], + "description": "The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog [APM Retention Filters API](https://docs.datadoghq.com/api/v2/apm-retention-filters/) resource, which is used to manage Datadog APM retention filters order.", + "description_kind": "plain" + } + }, + "datadog_application_key": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "key": { + "type": "string", + "description": "The value of the Application Key.", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "name": { + "type": "string", + "description": "Name for Application Key.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys.", + "description_kind": "plain" + } + }, + "datadog_authn_mapping": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description": "Identity provider key.", + "description_kind": "plain", + "required": true + }, + "role": { + "type": "string", + "description": "The ID of a role to attach to all users with the corresponding key and value.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "Identity provider value.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog AuthN Mappings resource. This feature lets you automatically assign roles to users based on their SAML attributes.", + "description_kind": "plain" + } + }, + "datadog_child_organization": { + "version": 0, + "block": { + "attributes": { + "api_key": { + "type": [ + "list", + [ + "object", + { + "key": "string", + "name": "string" + } + ] + ], + "description": "Datadog API key.", + "description_kind": "plain", + "computed": true + }, + "application_key": { + "type": [ + "list", + [ + "object", + { + "hash": "string", + "name": "string", + "owner": "string" + } + ] + ], + "description": "An application key with its associated metadata.", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "Description of the organization.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name for Child Organization after creation.", + "description_kind": "plain", + "required": true + }, + "public_id": { + "type": "string", + "description": "The `public_id` of the organization you are operating within.", + "description_kind": "plain", + "computed": true + }, + "settings": { + "type": [ + "list", + [ + "object", + { + "private_widget_share": "bool", + "saml": [ + "list", + [ + "object", + { + "enabled": "bool" + } + ] + ], + "saml_autocreate_access_role": "string", + "saml_autocreate_users_domains": [ + "list", + [ + "object", + { + "domains": [ + "list", + "string" + ], + "enabled": "bool" + } + ] + ], + "saml_can_be_enabled": "bool", + "saml_idp_endpoint": "string", + "saml_idp_initiated_login": [ + "list", + [ + "object", + { + "enabled": "bool" + } + ] + ], + "saml_idp_metadata_uploaded": "bool", + "saml_login_url": "string", + "saml_strict_mode": [ + "list", + [ + "object", + { + "enabled": "bool" + } + ] + ] + } + ] + ], + "description": "Organization settings", + "description_kind": "plain", + "computed": true + }, + "user": { + "type": [ + "list", + [ + "object", + { + "access_role": "string", + "email": "string", + "name": "string" + } + ] + ], + "description": "Information about a user", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog Child Organization resource. This can be used to create Datadog Child Organizations. To manage created organization use `datadog_organization_settings`.", + "description_kind": "plain" + } + }, + "datadog_cloud_configuration_rule": { + "version": 0, + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether the cloud configuration rule is enabled.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Fields to group by when generating signals, e.g. @resource. Defaults to empty list.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "message": { + "type": "string", + "description": "The message associated to the rule that will be shown in findings and signals.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the cloud configuration rule.", + "description_kind": "plain", + "required": true + }, + "notifications": { + "type": [ + "list", + "string" + ], + "description": "Notification targets for signals. Defaults to empty list.", + "description_kind": "plain", + "optional": true + }, + "policy": { + "type": "string", + "description": "Policy written in Rego format.", + "description_kind": "plain", + "required": true + }, + "related_resource_types": { + "type": [ + "list", + "string" + ], + "description": "Related resource types to be checked by the rule. Defaults to empty list.", + "description_kind": "plain", + "optional": true + }, + "resource_type": { + "type": "string", + "description": "Main resource type to be checked by the rule.", + "description_kind": "plain", + "required": true + }, + "severity": { + "type": "string", + "description": "Severity of the rule and associated signals. Valid values are `info`, `low`, `medium`, `high`, `critical`.", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "Tags of the rule, propagated to findings and signals. Defaults to empty list.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "action": { + "type": "string", + "description": "The type of filtering action. Valid values are `require`, `suppress`.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "Query for selecting logs to apply the filtering action.", + "description_kind": "plain", + "required": true + } + }, + "description": "Additional queries to filter matched events before they are processed. Defaults to empty list", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog Cloud Configuration Rule resource.", + "description_kind": "plain" + } + }, + "datadog_cloud_workload_security_agent_rule": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "The description of the Agent rule. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "enabled": { + "type": "bool", + "description": "Whether the Agent rule is enabled. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description": "The SECL expression of the Agent rule.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Agent rule.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog Cloud Workload Security Agent Rule API resource for agent rules.", + "description_kind": "plain" + } + }, + "datadog_dashboard": { + "version": 0, + "block": { + "attributes": { + "dashboard_lists": { + "type": [ + "set", + "number" + ], + "description": "A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior.", + "description_kind": "plain", + "optional": true + }, + "dashboard_lists_removed": { + "type": [ + "set", + "number" + ], + "description": "A list of dashboard lists this dashboard should be removed from. Internal only.", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the dashboard.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_read_only": { + "type": "bool", + "description": "Whether this dashboard is read-only. **Deprecated.** Prefer using `restricted_roles` to define which roles are required to edit the dashboard. Defaults to `false`.", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "layout_type": { + "type": "string", + "description": "The layout type of the dashboard. Valid values are `ordered`, `free`.", + "description_kind": "plain", + "required": true + }, + "notify_list": { + "type": [ + "set", + "string" + ], + "description": "The list of handles for the users to notify when changes are made to this dashboard.", + "description_kind": "plain", + "optional": true + }, + "reflow_type": { + "type": "string", + "description": "The reflow type of a new dashboard layout. Set this only when layout type is `ordered`. If set to `fixed`, the dashboard expects all widgets to have a layout, and if it's set to `auto`, widgets should not have layouts. Valid values are `auto`, `fixed`.", + "description_kind": "plain", + "optional": true + }, + "restricted_roles": { + "type": [ + "set", + "string" + ], + "description": "UUIDs of roles whose associated users are authorized to edit the dashboard.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags assigned to the Dashboard. Only team names of the form `team:\u003cname\u003e` are supported.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the dashboard.", + "description_kind": "plain", + "required": true + }, + "url": { + "type": "string", + "description": "The URL of the dashboard.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "template_variable": { + "nesting_mode": "list", + "block": { + "attributes": { + "available_values": { + "type": [ + "list", + "string" + ], + "description": "The list of values that the template variable drop-down is be limited to", + "description_kind": "plain", + "optional": true + }, + "default": { + "type": "string", + "description": "The default value for the template variable on dashboard load. Cannot be used in conjunction with `defaults`. **Deprecated.** Use `defaults` instead.", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "defaults": { + "type": [ + "list", + "string" + ], + "description": "One or many default values for template variables on load. If more than one default is specified, they will be unioned together with `OR`. Cannot be used in conjunction with `default`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the variable.", + "description_kind": "plain", + "required": true + }, + "prefix": { + "type": "string", + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The list of template variables for this dashboard.", + "description_kind": "plain" + } + }, + "template_variable_preset": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The name of the preset.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "template_variable": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The name of the template variable", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "The value that should be assumed by the template variable in this preset. Cannot be used in conjunction with `values`. **Deprecated.** Use `values` instead.", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "values": { + "type": [ + "list", + "string" + ], + "description": "One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified. Cannot be used in conjunction with `value`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The template variable names and assumed values under the given preset", + "description_kind": "plain" + } + } + }, + "description": "The list of selectable template variable presets for this dashboard.", + "description_kind": "plain" + } + }, + "widget": { + "nesting_mode": "list", + "block": { + "attributes": { + "id": { + "type": "number", + "description": "The ID of the widget.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "alert_graph_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "alert_id": { + "type": "string", + "description": "The ID of the monitor used by the widget.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "viz_type": { + "type": "string", + "description": "Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for a Alert Graph widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "alert_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "alert_id": { + "type": "string", + "description": "The ID of the monitor used by the widget.", + "description_kind": "plain", + "required": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the value. Use `*` for maximum precision.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the text in the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Alert Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "change_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "change_type": { + "type": "string", + "description": "Whether to show absolute or relative change. Valid values are `absolute`, `relative`.", + "description_kind": "plain", + "optional": true + }, + "compare_to": { + "type": "string", + "description": "Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.", + "description_kind": "plain", + "optional": true + }, + "increase_good": { + "type": "bool", + "description": "A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).", + "description_kind": "plain", + "optional": true + }, + "order_by": { + "type": "string", + "description": "What to order by. Valid values are `change`, `name`, `present`, `past`.", + "description_kind": "plain", + "optional": true + }, + "order_dir": { + "type": "string", + "description": "Widget sorting method. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + }, + "show_present": { + "type": "bool", + "description": "If set to `true`, displays the current value.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Change widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "check_status_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "check": { + "type": "string", + "description": "The check to use in the widget.", + "description_kind": "plain", + "required": true + }, + "group": { + "type": "string", + "description": "The check group to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.", + "description_kind": "plain", + "optional": true + }, + "grouping": { + "type": "string", + "description": "The kind of grouping to use. Valid values are `check`, `cluster`.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Check Status widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "distribution_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Distribution widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "event_size": { + "type": "string", + "description": "The size to use to display an event. Valid values are `s`, `l`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters, options: `and` or `or`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Event Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_timeline_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters, options: `and` or `or`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Event Timeline widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "free_text_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color": { + "type": "string", + "description": "The color of the text in the widget.", + "description_kind": "plain", + "optional": true + }, + "font_size": { + "type": "string", + "description": "The size of the text in the widget.", + "description_kind": "plain", + "optional": true + }, + "text": { + "type": "string", + "description": "The text to display in the widget.", + "description_kind": "plain", + "required": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the text in the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Free Text widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "geomap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette to apply to the widget.", + "description_kind": "plain", + "required": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "required": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "view": { + "nesting_mode": "list", + "block": { + "attributes": { + "focus": { + "type": "string", + "description": "The two-letter ISO code of a country to focus the map on (or `WORLD`).", + "description_kind": "plain", + "required": true + } + }, + "description": "The view of the world that the map should render.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for a Geomap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "background_color": { + "type": "string", + "description": "The background color of the group title, options: `vivid_blue`, `vivid_purple`, `vivid_pink`, `vivid_orange`, `vivid_yellow`, `vivid_green`, `blue`, `purple`, `pink`, `orange`, `yellow`, `green`, `gray` or `white`", + "description_kind": "plain", + "optional": true + }, + "banner_img": { + "type": "string", + "description": "The image URL to display as a banner for the group.", + "description_kind": "plain", + "optional": true + }, + "layout_type": { + "type": "string", + "description": "The layout type of the group. Valid values are `ordered`.", + "description_kind": "plain", + "required": true + }, + "show_title": { + "type": "bool", + "description": "Whether to show the title or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "widget": { + "nesting_mode": "list", + "block": { + "attributes": { + "id": { + "type": "number", + "description": "The ID of the widget.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "alert_graph_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "alert_id": { + "type": "string", + "description": "The ID of the monitor used by the widget.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "viz_type": { + "type": "string", + "description": "Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for a Alert Graph widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "alert_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "alert_id": { + "type": "string", + "description": "The ID of the monitor used by the widget.", + "description_kind": "plain", + "required": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the value. Use `*` for maximum precision.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the text in the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Alert Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "change_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "change_type": { + "type": "string", + "description": "Whether to show absolute or relative change. Valid values are `absolute`, `relative`.", + "description_kind": "plain", + "optional": true + }, + "compare_to": { + "type": "string", + "description": "Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.", + "description_kind": "plain", + "optional": true + }, + "increase_good": { + "type": "bool", + "description": "A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).", + "description_kind": "plain", + "optional": true + }, + "order_by": { + "type": "string", + "description": "What to order by. Valid values are `change`, `name`, `present`, `past`.", + "description_kind": "plain", + "optional": true + }, + "order_dir": { + "type": "string", + "description": "Widget sorting method. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + }, + "show_present": { + "type": "bool", + "description": "If set to `true`, displays the current value.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Change widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "check_status_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "check": { + "type": "string", + "description": "The check to use in the widget.", + "description_kind": "plain", + "required": true + }, + "group": { + "type": "string", + "description": "The check group to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.", + "description_kind": "plain", + "optional": true + }, + "grouping": { + "type": "string", + "description": "The kind of grouping to use. Valid values are `check`, `cluster`.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Check Status widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "distribution_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Distribution widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "event_size": { + "type": "string", + "description": "The size to use to display an event. Valid values are `s`, `l`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters, options: `and` or `or`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Event Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_timeline_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters, options: `and` or `or`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Event Timeline widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "free_text_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color": { + "type": "string", + "description": "The color of the text in the widget.", + "description_kind": "plain", + "optional": true + }, + "font_size": { + "type": "string", + "description": "The size of the text in the widget.", + "description_kind": "plain", + "optional": true + }, + "text": { + "type": "string", + "description": "The text to display in the widget.", + "description_kind": "plain", + "required": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the text in the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Free Text widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "geomap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette to apply to the widget.", + "description_kind": "plain", + "required": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "required": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "view": { + "nesting_mode": "list", + "block": { + "attributes": { + "focus": { + "type": "string", + "description": "The two-letter ISO code of a country to focus the map on (or `WORLD`).", + "description_kind": "plain", + "required": true + } + }, + "description": "The view of the world that the map should render.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for a Geomap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "heatmap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Heatmap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "hostmap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "group": { + "type": [ + "list", + "string" + ], + "description": "The list of tags to group nodes by.", + "description_kind": "plain", + "optional": true + }, + "no_group_hosts": { + "type": "bool", + "description": "A Boolean indicating whether to show ungrouped nodes.", + "description_kind": "plain", + "optional": true + }, + "no_metric_hosts": { + "type": "bool", + "description": "A Boolean indicating whether to show nodes with no metrics.", + "description_kind": "plain", + "optional": true + }, + "node_type": { + "type": "string", + "description": "The type of node used. Valid values are `host`, `container`.", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description": "The list of tags to filter nodes by.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "fill": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + }, + "size": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "fill_max": { + "type": "string", + "description": "The max value to use to color the map.", + "description_kind": "plain", + "optional": true + }, + "fill_min": { + "type": "string", + "description": "The min value to use to color the map.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Hostmap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "iframe_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "url": { + "type": "string", + "description": "The URL to use as a data source for the widget.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for an Iframe widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "image_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_background": { + "type": "bool", + "description": "Whether to display a background or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "has_border": { + "type": "bool", + "description": "Whether to display a border or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "horizontal_align": { + "type": "string", + "description": "The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "margin": { + "type": "string", + "description": "The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.", + "description_kind": "plain", + "optional": true + }, + "sizing": { + "type": "string", + "description": "The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "The URL to use as a data source for the widget.", + "description_kind": "plain", + "required": true + }, + "url_dark_theme": { + "type": "string", + "description": "The URL in dark mode to use as a data source for the widget.", + "description_kind": "plain", + "optional": true + }, + "vertical_align": { + "type": "string", + "description": "The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for an Image widget", + "description_kind": "plain" + }, + "max_items": 1 + }, + "list_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "response_format": { + "type": "string", + "description": "Widget response format. Valid values are `event_list`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "field": { + "type": "string", + "description": "Widget column field.", + "description_kind": "plain", + "required": true + }, + "width": { + "type": "string", + "description": "Widget column width. Valid values are `auto`, `compact`, `full`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Widget columns.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.", + "description_kind": "plain", + "required": true + }, + "event_size": { + "type": "string", + "description": "Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.", + "description_kind": "plain", + "optional": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "List of indexes.", + "description_kind": "plain", + "optional": true + }, + "query_string": { + "type": "string", + "description": "Widget query.", + "description_kind": "plain", + "optional": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Updated list stream widget.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "The definition for a List Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "columns": { + "type": [ + "list", + "string" + ], + "description": "Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.", + "description_kind": "plain", + "optional": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "message_display": { + "type": "string", + "description": "The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "show_date_column": { + "type": "bool", + "description": "If the date column should be displayed.", + "description_kind": "plain", + "optional": true + }, + "show_message_column": { + "type": "bool", + "description": "If the message column should be displayed.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for an Log Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "manage_status_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_preference": { + "type": "string", + "description": "Whether to colorize text or background. Valid values are `background`, `text`.", + "description_kind": "plain", + "optional": true + }, + "display_format": { + "type": "string", + "description": "The display setting to use. Valid values are `counts`, `countsAndList`, `list`.", + "description_kind": "plain", + "optional": true + }, + "hide_zero_counts": { + "type": "bool", + "description": "A Boolean indicating whether to hide empty categories.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "show_last_triggered": { + "type": "bool", + "description": "A Boolean indicating whether to show when monitors/groups last triggered.", + "description_kind": "plain", + "optional": true + }, + "show_priority": { + "type": "bool", + "description": "Whether to show the priorities column.", + "description_kind": "plain", + "optional": true + }, + "sort": { + "type": "string", + "description": "The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.", + "description_kind": "plain", + "optional": true + }, + "summary_type": { + "type": "string", + "description": "The summary type to use. Valid values are `monitors`, `groups`, `combined`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for an Manage Status widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "note_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "background_color": { + "type": "string", + "description": "The background color of the note.", + "description_kind": "plain", + "optional": true + }, + "content": { + "type": "string", + "description": "The content of the note.", + "description_kind": "plain", + "required": true + }, + "font_size": { + "type": "string", + "description": "The size of the text.", + "description_kind": "plain", + "optional": true + }, + "has_padding": { + "type": "bool", + "description": "Whether to add padding or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "show_tick": { + "type": "bool", + "description": "Whether to show a tick or not.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "tick_edge": { + "type": "string", + "description": "When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.", + "description_kind": "plain", + "optional": true + }, + "tick_pos": { + "type": "string", + "description": "When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.", + "description_kind": "plain", + "optional": true + }, + "vertical_align": { + "type": "string", + "description": "The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Note widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "powerpack_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "background_color": { + "type": "string", + "description": "The background color of the powerpack title.", + "description_kind": "plain", + "optional": true + }, + "banner_img": { + "type": "string", + "description": "URL of image to display as a banner for the powerpack.", + "description_kind": "plain", + "optional": true + }, + "powerpack_id": { + "type": "string", + "description": "UUID of the associated powerpack.", + "description_kind": "plain", + "required": true + }, + "show_title": { + "type": "bool", + "description": "Whether to show the title of the powerpack.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "Title of the powerpack.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "template_variables": { + "nesting_mode": "list", + "block": { + "block_types": { + "controlled_by_powerpack": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The name of the variable.", + "description_kind": "plain", + "required": true + }, + "prefix": { + "type": "string", + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.", + "description_kind": "plain", + "optional": true + }, + "values": { + "type": [ + "list", + "string" + ], + "description": "One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.", + "description_kind": "plain", + "required": true + } + }, + "description": "Template variables controlled at the powerpack level.", + "description_kind": "plain" + } + }, + "controlled_externally": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The name of the variable.", + "description_kind": "plain", + "required": true + }, + "prefix": { + "type": "string", + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.", + "description_kind": "plain", + "optional": true + }, + "values": { + "type": [ + "list", + "string" + ], + "description": "One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.", + "description_kind": "plain", + "required": true + } + }, + "description": "Template variables controlled by the external resource, such as the dashboard this powerpack is on.", + "description_kind": "plain" + } + } + }, + "description": "The list of template variables for this powerpack.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Powerpack widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_table_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_search_bar": { + "type": "string", + "description": "Controls the display of the search bar. Valid values are `always`, `never`, `auto`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "alias": { + "type": "string", + "description": "The alias for the column name (defaults to metric name).", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": [ + "list", + "string" + ], + "description": "A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of lines to show in the table.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The sort order for the rows. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Query Table widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "autoscale": { + "type": "bool", + "description": "A Boolean indicating whether to automatically scale the tile.", + "description_kind": "plain", + "optional": true + }, + "custom_unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the tile.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "timeseries_background": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Set a timeseries on the widget background.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Query Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "run_workflow_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "workflow_id": { + "type": "string", + "description": "Workflow ID", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "input": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "Name of the workflow input.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "Dashboard template variable. Can be suffixed with `.value` or `.key`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Array of workflow inputs to map to dashboard template variables.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Run Workflow widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "scatterplot_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_by_groups": { + "type": [ + "list", + "string" + ], + "description": "List of groups used for colors.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "scatterplot_table": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "dimension": { + "type": "string", + "description": "Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.", + "description_kind": "plain", + "required": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Scatterplot request containing formulas and functions.", + "description_kind": "plain" + } + }, + "x": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + }, + "y": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "xaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Scatterplot widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "service_level_objective_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "global_time_target": { + "type": "string", + "description": "The global time target of the widget.", + "description_kind": "plain", + "optional": true + }, + "show_error_budget": { + "type": "bool", + "description": "Whether to show the error budget or not.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "The ID of the service level objective used by the widget.", + "description_kind": "plain", + "required": true + }, + "time_windows": { + "type": [ + "list", + "string" + ], + "description": "A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "view_mode": { + "type": "string", + "description": "The view mode for the widget. Valid values are `overall`, `component`, `both`.", + "description_kind": "plain", + "required": true + }, + "view_type": { + "type": "string", + "description": "The type of view to use when displaying the widget. Only `detail` is supported.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for a Service Level Objective widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "servicemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "filters": { + "type": [ + "list", + "string" + ], + "description": "Your environment and primary tag (or `*` if enabled for your account).", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The ID of the service to map.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Service Map widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_list_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "request_type": { + "type": "string", + "description": "The request type for the SLO List request. Valid values are `slo_list`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "limit": { + "type": "number", + "description": "Maximum number of results to display in the table. Defaults to `100`.", + "description_kind": "plain", + "optional": true + }, + "query_string": { + "type": "string", + "description": "Widget query.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Updated SLO List widget.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for an SLO (Service Level Objective) List widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "split_graph_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_uniform_y_axes": { + "type": "bool", + "description": "Normalize y axes across graphs.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "size": { + "type": "string", + "description": "Size of the individual graphs in the split.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "source_widget_definition": { + "nesting_mode": "list", + "block": { + "block_types": { + "change_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "change_type": { + "type": "string", + "description": "Whether to show absolute or relative change. Valid values are `absolute`, `relative`.", + "description_kind": "plain", + "optional": true + }, + "compare_to": { + "type": "string", + "description": "Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.", + "description_kind": "plain", + "optional": true + }, + "increase_good": { + "type": "bool", + "description": "A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).", + "description_kind": "plain", + "optional": true + }, + "order_by": { + "type": "string", + "description": "What to order by. Valid values are `change`, `name`, `present`, `past`.", + "description_kind": "plain", + "optional": true + }, + "order_dir": { + "type": "string", + "description": "Widget sorting method. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + }, + "show_present": { + "type": "bool", + "description": "If set to `true`, displays the current value.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Change widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "geomap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette to apply to the widget.", + "description_kind": "plain", + "required": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "required": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "view": { + "nesting_mode": "list", + "block": { + "attributes": { + "focus": { + "type": "string", + "description": "The two-letter ISO code of a country to focus the map on (or `WORLD`).", + "description_kind": "plain", + "required": true + } + }, + "description": "The view of the world that the map should render.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for a Geomap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_table_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_search_bar": { + "type": "string", + "description": "Controls the display of the search bar. Valid values are `always`, `never`, `auto`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "alias": { + "type": "string", + "description": "The alias for the column name (defaults to metric name).", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": [ + "list", + "string" + ], + "description": "A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of lines to show in the table.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The sort order for the rows. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Query Table widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "autoscale": { + "type": "bool", + "description": "A Boolean indicating whether to automatically scale the tile.", + "description_kind": "plain", + "optional": true + }, + "custom_unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the tile.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "timeseries_background": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Set a timeseries on the widget background.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Query Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "scatterplot_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_by_groups": { + "type": [ + "list", + "string" + ], + "description": "List of groups used for colors.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "scatterplot_table": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "dimension": { + "type": "string", + "description": "Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.", + "description_kind": "plain", + "required": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Scatterplot request containing formulas and functions.", + "description_kind": "plain" + } + }, + "x": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + }, + "y": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "xaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Scatterplot widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sunburst_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_total": { + "type": "bool", + "description": "Whether or not to show the total value in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "legend_inline": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_percent": { + "type": "bool", + "description": "Whether to hide the percentages of the groups.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Whether to hide the values of the groups.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "The type of legend (inline or automatic). Valid values are `inline`, `automatic`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the inline legend. Cannot be used in conjunction with legend_table.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "legend_table": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "The type of legend (table or none). Valid values are `table`, `none`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the table legend. Cannot be used in conjunction with legend_inline.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define style for the widget's request.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Sunburst widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeseries_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_columns": { + "type": [ + "set", + "string" + ], + "description": "A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.", + "description_kind": "plain", + "optional": true + }, + "legend_layout": { + "type": "string", + "description": "The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.", + "description_kind": "plain", + "optional": true + }, + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "marker": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "A label for the line or range.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.", + "description_kind": "plain", + "optional": true + }, + "on_right_yaxis": { + "type": "bool", + "description": "A Boolean indicating whether the request uses the right or left Y-Axis.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metadata": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias_name": { + "type": "string", + "description": "The expression alias.", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description": "The expression name.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" +  }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "line_type": { + "type": "string", + "description": "The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.", + "description_kind": "plain", + "optional": true + }, + "line_width": { + "type": "string", + "description": "The width of line displayed. Valid values are `normal`, `thick`, `thin`.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. Exactly one `style` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "right_yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Timeseries widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "toplist_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define request for the widget's style.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Toplist widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "treemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Nested block describing the request to use when displaying the widget.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Treemap widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The original widget we are splitting on.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "split_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "limit": { + "type": "number", + "description": "Maximum number of graphs to display in the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "How to aggregate the sort metric for the purposes of ordering.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric to use for sorting graphs.", + "description_kind": "plain", + "required": true + } + }, + "description": "Defines the metric and aggregation used as the sort value", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Controls the order in which graphs appear in the split.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "split_dimensions": { + "nesting_mode": "list", + "block": { + "attributes": { + "one_graph_per": { + "type": "string", + "description": "The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag.", + "description_kind": "plain", + "required": true + } + }, + "description": "The property by which the graph splits", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "static_splits": { + "nesting_mode": "list", + "block": { + "block_types": { + "split_vector": { + "nesting_mode": "list", + "block": { + "attributes": { + "tag_key": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tag_values": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + } + }, + "description": "The split graph list contains a graph for each value of the split dimension.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "The property by which the graph splits", + "description_kind": "plain" + }, + "max_items": 100 + } + }, + "description": "Encapsulates all user choices about how to split a graph.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for a Split Graph widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sunburst_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_total": { + "type": "bool", + "description": "Whether or not to show the total value in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "legend_inline": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_percent": { + "type": "bool", + "description": "Whether to hide the percentages of the groups.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Whether to hide the values of the groups.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "The type of legend (inline or automatic). Valid values are `inline`, `automatic`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the inline legend. Cannot be used in conjunction with legend_table.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "legend_table": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "The type of legend (table or none). Valid values are `table`, `none`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the table legend. Cannot be used in conjunction with legend_inline.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define style for the widget's request.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Sunburst widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeseries_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_columns": { + "type": [ + "set", + "string" + ], + "description": "A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.", + "description_kind": "plain", + "optional": true + }, + "legend_layout": { + "type": "string", + "description": "The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.", + "description_kind": "plain", + "optional": true + }, + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "marker": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "A label for the line or range.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.", + "description_kind": "plain", + "optional": true + }, + "on_right_yaxis": { + "type": "bool", + "description": "A Boolean indicating whether the request uses the right or left Y-Axis.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metadata": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias_name": { + "type": "string", + "description": "The expression alias.", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description": "The expression name.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "line_type": { + "type": "string", + "description": "The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.", + "description_kind": "plain", + "optional": true + }, + "line_width": { + "type": "string", + "description": "The width of line displayed. Valid values are `normal`, `thick`, `thin`.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. Exactly one `style` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "right_yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Timeseries widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "toplist_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define request for the widget's style.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Toplist widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "topology_map_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "request_type": { + "type": "string", + "description": "The request type for the Topology request ('topology'). Valid values are `topology`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.", + "description_kind": "plain", + "required": true + }, + "filters": { + "type": [ + "list", + "string" + ], + "description": "Your environment and primary tag (or `*` if enabled for your account).", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The ID of the service to map.", + "description_kind": "plain", + "required": true + } + }, + "description": "The query for a Topology request.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Topology Map widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "trace_service_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_format": { + "type": "string", + "description": "The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.", + "description_kind": "plain", + "optional": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "show_breakdown": { + "type": "bool", + "description": "Whether to show the latency breakdown or not.", + "description_kind": "plain", + "optional": true + }, + "show_distribution": { + "type": "bool", + "description": "Whether to show the latency distribution or not.", + "description_kind": "plain", + "optional": true + }, + "show_errors": { + "type": "bool", + "description": "Whether to show the error metrics or not.", + "description_kind": "plain", + "optional": true + }, + "show_hits": { + "type": "bool", + "description": "Whether to show the hits metrics or not", + "description_kind": "plain", + "optional": true + }, + "show_latency": { + "type": "bool", + "description": "Whether to show the latency metrics or not.", + "description_kind": "plain", + "optional": true + }, + "show_resource_list": { + "type": "bool", + "description": "Whether to show the resource list or not.", + "description_kind": "plain", + "optional": true + }, + "size_format": { + "type": "string", + "description": "The size of the widget. Valid values are `small`, `medium`, `large`.", + "description_kind": "plain", + "optional": true + }, + "span_name": { + "type": "string", + "description": "APM span name", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Trace Service widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "treemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Nested block describing the request to use when displaying the widget.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Treemap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "widget_layout": { + "nesting_mode": "list", + "block": { + "attributes": { + "height": { + "type": "number", + "description": "The height of the widget.", + "description_kind": "plain", + "required": true + }, + "is_column_break": { + "type": "bool", + "description": "Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.", + "description_kind": "plain", + "optional": true + }, + "width": { + "type": "number", + "description": "The width of the widget.", + "description_kind": "plain", + "required": true + }, + "x": { + "type": "number", + "description": "The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.", + "description_kind": "plain", + "required": true + }, + "y": { + "type": "number", + "description": "The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.", + "description_kind": "plain", + "required": true + } + }, + "description": "The layout of the widget on a 'free' dashboard.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The list of widgets in this group.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Group widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "heatmap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Heatmap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "hostmap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "group": { + "type": [ + "list", + "string" + ], + "description": "The list of tags to group nodes by.", + "description_kind": "plain", + "optional": true + }, + "no_group_hosts": { + "type": "bool", + "description": "A Boolean indicating whether to show ungrouped nodes.", + "description_kind": "plain", + "optional": true + }, + "no_metric_hosts": { + "type": "bool", + "description": "A Boolean indicating whether to show nodes with no metrics.", + "description_kind": "plain", + "optional": true + }, + "node_type": { + "type": "string", + "description": "The type of node used. Valid values are `host`, `container`.", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description": "The list of tags to filter nodes by.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "fill": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + }, + "size": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "fill_max": { + "type": "string", + "description": "The max value to use to color the map.", + "description_kind": "plain", + "optional": true + }, + "fill_min": { + "type": "string", + "description": "The min value to use to color the map.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Hostmap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "iframe_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "url": { + "type": "string", + "description": "The URL to use as a data source for the widget.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for an Iframe widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "image_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_background": { + "type": "bool", + "description": "Whether to display a background or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "has_border": { + "type": "bool", + "description": "Whether to display a border or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "horizontal_align": { + "type": "string", + "description": "The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "margin": { + "type": "string", + "description": "The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.", + "description_kind": "plain", + "optional": true + }, + "sizing": { + "type": "string", + "description": "The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "The URL to use as a data source for the widget.", + "description_kind": "plain", + "required": true + }, + "url_dark_theme": { + "type": "string", + "description": "The URL in dark mode to use as a data source for the widget.", + "description_kind": "plain", + "optional": true + }, + "vertical_align": { + "type": "string", + "description": "The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for an Image widget", + "description_kind": "plain" + }, + "max_items": 1 + }, + "list_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "response_format": { + "type": "string", + "description": "Widget response format. Valid values are `event_list`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "field": { + "type": "string", + "description": "Widget column field.", + "description_kind": "plain", + "required": true + }, + "width": { + "type": "string", + "description": "Widget column width. Valid values are `auto`, `compact`, `full`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Widget columns.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.", + "description_kind": "plain", + "required": true + }, + "event_size": { + "type": "string", + "description": "Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.", + "description_kind": "plain", + "optional": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "List of indexes.", + "description_kind": "plain", + "optional": true + }, + "query_string": { + "type": "string", + "description": "Widget query.", + "description_kind": "plain", + "optional": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Updated list stream widget.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "The definition for a List Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "columns": { + "type": [ + "list", + "string" + ], + "description": "Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.", + "description_kind": "plain", + "optional": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "message_display": { + "type": "string", + "description": "The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "show_date_column": { + "type": "bool", + "description": "If the date column should be displayed.", + "description_kind": "plain", + "optional": true + }, + "show_message_column": { + "type": "bool", + "description": "If the message column should be displayed.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for an Log Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "manage_status_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_preference": { + "type": "string", + "description": "Whether to colorize text or background. Valid values are `background`, `text`.", + "description_kind": "plain", + "optional": true + }, + "display_format": { + "type": "string", + "description": "The display setting to use. Valid values are `counts`, `countsAndList`, `list`.", + "description_kind": "plain", + "optional": true + }, + "hide_zero_counts": { + "type": "bool", + "description": "A Boolean indicating whether to hide empty categories.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "show_last_triggered": { + "type": "bool", + "description": "A Boolean indicating whether to show when monitors/groups last triggered.", + "description_kind": "plain", + "optional": true + }, + "show_priority": { + "type": "bool", + "description": "Whether to show the priorities column.", + "description_kind": "plain", + "optional": true + }, + "sort": { + "type": "string", + "description": "The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.", + "description_kind": "plain", + "optional": true + }, + "summary_type": { + "type": "string", + "description": "The summary type to use. Valid values are `monitors`, `groups`, `combined`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for an Manage Status widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "note_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "background_color": { + "type": "string", + "description": "The background color of the note.", + "description_kind": "plain", + "optional": true + }, + "content": { + "type": "string", + "description": "The content of the note.", + "description_kind": "plain", + "required": true + }, + "font_size": { + "type": "string", + "description": "The size of the text.", + "description_kind": "plain", + "optional": true + }, + "has_padding": { + "type": "bool", + "description": "Whether to add padding or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "show_tick": { + "type": "bool", + "description": "Whether to show a tick or not.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "tick_edge": { + "type": "string", + "description": "When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.", + "description_kind": "plain", + "optional": true + }, + "tick_pos": { + "type": "string", + "description": "When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.", + "description_kind": "plain", + "optional": true + }, + "vertical_align": { + "type": "string", + "description": "The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Note widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "powerpack_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "background_color": { + "type": "string", + "description": "The background color of the powerpack title.", + "description_kind": "plain", + "optional": true + }, + "banner_img": { + "type": "string", + "description": "URL of image to display as a banner for the powerpack.", + "description_kind": "plain", + "optional": true + }, + "powerpack_id": { + "type": "string", + "description": "UUID of the associated powerpack.", + "description_kind": "plain", + "required": true + }, + "show_title": { + "type": "bool", + "description": "Whether to show the title of the powerpack.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "Title of the powerpack.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "template_variables": { + "nesting_mode": "list", + "block": { + "block_types": { + "controlled_by_powerpack": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The name of the variable.", + "description_kind": "plain", + "required": true + }, + "prefix": { + "type": "string", + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.", + "description_kind": "plain", + "optional": true + }, + "values": { + "type": [ + "list", + "string" + ], + "description": "One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.", + "description_kind": "plain", + "required": true + } + }, + "description": "Template variables controlled at the powerpack level.", + "description_kind": "plain" + } + }, + "controlled_externally": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "The name of the variable.", + "description_kind": "plain", + "required": true + }, + "prefix": { + "type": "string", + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.", + "description_kind": "plain", + "optional": true + }, + "values": { + "type": [ + "list", + "string" + ], + "description": "One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.", + "description_kind": "plain", + "required": true + } + }, + "description": "Template variables controlled by the external resource, such as the dashboard this powerpack is on.", + "description_kind": "plain" + } + } + }, + "description": "The list of template variables for this powerpack.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Powerpack widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_table_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_search_bar": { + "type": "string", + "description": "Controls the display of the search bar. Valid values are `always`, `never`, `auto`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "alias": { + "type": "string", + "description": "The alias for the column name (defaults to metric name).", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": [ + "list", + "string" + ], + "description": "A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of lines to show in the table.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The sort order for the rows. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Query Table widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "autoscale": { + "type": "bool", + "description": "A Boolean indicating whether to automatically scale the tile.", + "description_kind": "plain", + "optional": true + }, + "custom_unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the tile.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "timeseries_background": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Set a timeseries on the widget background.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Query Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "run_workflow_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "workflow_id": { + "type": "string", + "description": "Workflow ID", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "input": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "Name of the workflow input.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "Dashboard template variable. Can be suffixed with `.value` or `.key`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Array of workflow inputs to map to dashboard template variables.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Run Workflow widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "scatterplot_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_by_groups": { + "type": [ + "list", + "string" + ], + "description": "List of groups used for colors.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "scatterplot_table": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "dimension": { + "type": "string", + "description": "Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.", + "description_kind": "plain", + "required": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Scatterplot request containing formulas and functions.", + "description_kind": "plain" + } + }, + "x": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + }, + "y": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "xaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Scatterplot widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "service_level_objective_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "global_time_target": { + "type": "string", + "description": "The global time target of the widget.", + "description_kind": "plain", + "optional": true + }, + "show_error_budget": { + "type": "bool", + "description": "Whether to show the error budget or not.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "The ID of the service level objective used by the widget.", + "description_kind": "plain", + "required": true + }, + "time_windows": { + "type": [ + "list", + "string" + ], + "description": "A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "view_mode": { + "type": "string", + "description": "The view mode for the widget. Valid values are `overall`, `component`, `both`.", + "description_kind": "plain", + "required": true + }, + "view_type": { + "type": "string", + "description": "The type of view to use when displaying the widget. Only `detail` is supported.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for a Service Level Objective widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "servicemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "filters": { + "type": [ + "list", + "string" + ], + "description": "Your environment and primary tag (or `*` if enabled for your account).", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The ID of the service to map.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Service Map widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_list_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "request_type": { + "type": "string", + "description": "The request type for the SLO List request. Valid values are `slo_list`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "limit": { + "type": "number", + "description": "Maximum number of results to display in the table. Defaults to `100`.", + "description_kind": "plain", + "optional": true + }, + "query_string": { + "type": "string", + "description": "Widget query.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Updated SLO List widget.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for an SLO (Service Level Objective) List widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "split_graph_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_uniform_y_axes": { + "type": "bool", + "description": "Normalize y axes across graphs.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "size": { + "type": "string", + "description": "Size of the individual graphs in the split.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "source_widget_definition": { + "nesting_mode": "list", + "block": { + "block_types": { + "change_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "change_type": { + "type": "string", + "description": "Whether to show absolute or relative change. Valid values are `absolute`, `relative`.", + "description_kind": "plain", + "optional": true + }, + "compare_to": { + "type": "string", + "description": "Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.", + "description_kind": "plain", + "optional": true + }, + "increase_good": { + "type": "bool", + "description": "A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).", + "description_kind": "plain", + "optional": true + }, + "order_by": { + "type": "string", + "description": "What to order by. Valid values are `change`, `name`, `present`, `past`.", + "description_kind": "plain", + "optional": true + }, + "order_dir": { + "type": "string", + "description": "Widget sorting method. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + }, + "show_present": { + "type": "bool", + "description": "If set to `true`, displays the current value.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Change widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "geomap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette to apply to the widget.", + "description_kind": "plain", + "required": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "required": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "view": { + "nesting_mode": "list", + "block": { + "attributes": { + "focus": { + "type": "string", + "description": "The two-letter ISO code of a country to focus the map on (or `WORLD`).", + "description_kind": "plain", + "required": true + } + }, + "description": "The view of the world that the map should render.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for a Geomap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_table_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_search_bar": { + "type": "string", + "description": "Controls the display of the search bar. Valid values are `always`, `never`, `auto`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "alias": { + "type": "string", + "description": "The alias for the column name (defaults to metric name).", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": [ + "list", + "string" + ], + "description": "A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of lines to show in the table.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The sort order for the rows. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Query Table widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "autoscale": { + "type": "bool", + "description": "A Boolean indicating whether to automatically scale the tile.", + "description_kind": "plain", + "optional": true + }, + "custom_unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the tile.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "timeseries_background": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Set a timeseries on the widget background.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Query Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "scatterplot_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_by_groups": { + "type": [ + "list", + "string" + ], + "description": "List of groups used for colors.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "scatterplot_table": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "dimension": { + "type": "string", + "description": "Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.", + "description_kind": "plain", + "required": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Scatterplot request containing formulas and functions.", + "description_kind": "plain" + } + }, + "x": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + }, + "y": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "xaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Scatterplot widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sunburst_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_total": { + "type": "bool", + "description": "Whether or not to show the total value in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "legend_inline": { + "nesting_mode": "list", + "block": { +  "attributes": { + "hide_percent": { + "type": "bool", + "description": "Whether to hide the percentages of the groups.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Whether to hide the values of the groups.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "The type of legend (inline or automatic). Valid values are `inline`, `automatic`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the inline legend. Cannot be used in conjunction with legend_table.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "legend_table": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "The type of legend (table or none). Valid values are `table`, `none`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the table legend. Cannot be used in conjunction with legend_inline.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define style for the widget's request.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Sunburst widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeseries_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_columns": { + "type": [ + "set", + "string" + ], + "description": "A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.", + "description_kind": "plain", + "optional": true + }, + "legend_layout": { + "type": "string", + "description": "The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.", + "description_kind": "plain", + "optional": true + }, + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "marker": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "A label for the line or range.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.", + "description_kind": "plain", + "optional": true + }, + "on_right_yaxis": { + "type": "bool", + "description": "A Boolean indicating whether the request uses the right or left Y-Axis.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metadata": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias_name": { + "type": "string", + "description": "The expression alias.", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description": "The expression name.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "line_type": { + "type": "string", + "description": "The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.", + "description_kind": "plain", + "optional": true + }, + "line_width": { + "type": "string", + "description": "The width of line displayed. Valid values are `normal`, `thick`, `thin`.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. Exactly one `style` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "right_yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Timeseries widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "toplist_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define request for the widget's style.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Toplist widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "treemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Nested block describing the request to use when displaying the widget.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Treemap widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The original widget we are splitting on.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "split_config": { + "nesting_mode": "list", + "block": { + "attributes": { + "limit": { + "type": "number", + "description": "Maximum number of graphs to display in the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "How to aggregate the sort metric for the purposes of ordering.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric to use for sorting graphs.", + "description_kind": "plain", + "required": true + } + }, + "description": "Defines the metric and aggregation used as the sort value", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Controls the order in which graphs appear in the split.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "split_dimensions": { + "nesting_mode": "list", + "block": { + "attributes": { + "one_graph_per": { + "type": "string", + "description": "The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag.", + "description_kind": "plain", + "required": true + } + }, + "description": "The property by which the graph splits", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "static_splits": { + "nesting_mode": "list", + "block": { + "block_types": { + "split_vector": { + "nesting_mode": "list", + "block": { + "attributes": { + "tag_key": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tag_values": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "required": true + } + }, + "description": "The split graph list contains a graph for each value of the split dimension.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "The property by which the graph splits", + "description_kind": "plain" + }, + "max_items": 100 + } + }, + "description": "Encapsulates all user choices about how to split a graph.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for a Split Graph widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sunburst_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_total": { + "type": "bool", + "description": "Whether or not to show the total value in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "legend_inline": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_percent": { + "type": "bool", + "description": "Whether to hide the percentages of the groups.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Whether to hide the values of the groups.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "The type of legend (inline or automatic). Valid values are `inline`, `automatic`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the inline legend. Cannot be used in conjunction with legend_table.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "legend_table": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "The type of legend (table or none). Valid values are `table`, `none`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the table legend. Cannot be used in conjunction with legend_inline.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define style for the widget's request.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Sunburst widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeseries_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_columns": { + "type": [ + "set", + "string" + ], + "description": "A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.", + "description_kind": "plain", + "optional": true + }, + "legend_layout": { + "type": "string", + "description": "The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.", + "description_kind": "plain", + "optional": true + }, + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "marker": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "A label for the line or range.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.", + "description_kind": "plain", + "optional": true + }, + "on_right_yaxis": { + "type": "bool", + "description": "A Boolean indicating whether the request uses the right or left Y-Axis.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metadata": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias_name": { + "type": "string", + "description": "The expression alias.", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description": "The expression name.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "line_type": { + "type": "string", + "description": "The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.", + "description_kind": "plain", + "optional": true + }, + "line_width": { + "type": "string", + "description": "The width of line displayed. Valid values are `normal`, `thick`, `thin`.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. Exactly one `style` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "right_yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Timeseries widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "toplist_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define request for the widget's style.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Toplist widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "topology_map_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "request_type": { + "type": "string", + "description": "The request type for the Topology request ('topology'). Valid values are `topology`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.", + "description_kind": "plain", + "required": true + }, + "filters": { + "type": [ + "list", + "string" + ], + "description": "Your environment and primary tag (or `*` if enabled for your account).", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The ID of the service to map.", + "description_kind": "plain", + "required": true + } + }, + "description": "The query for a Topology request.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Topology Map widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "trace_service_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_format": { + "type": "string", + "description": "The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.", + "description_kind": "plain", + "optional": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "show_breakdown": { + "type": "bool", + "description": "Whether to show the latency breakdown or not.", + "description_kind": "plain", + "optional": true + }, + "show_distribution": { + "type": "bool", + "description": "Whether to show the latency distribution or not.", + "description_kind": "plain", + "optional": true + }, + "show_errors": { + "type": "bool", + "description": "Whether to show the error metrics or not.", + "description_kind": "plain", + "optional": true + }, + "show_hits": { + "type": "bool", + "description": "Whether to show the hits metrics or not", + "description_kind": "plain", + "optional": true + }, + "show_latency": { + "type": "bool", + "description": "Whether to show the latency metrics or not.", + "description_kind": "plain", + "optional": true + }, + "show_resource_list": { + "type": "bool", + "description": "Whether to show the resource list or not.", + "description_kind": "plain", + "optional": true + }, + "size_format": { + "type": "string", + "description": "The size of the widget. Valid values are `small`, `medium`, `large`.", + "description_kind": "plain", + "optional": true + }, + "span_name": { + "type": "string", + "description": "APM span name", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Trace Service widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "treemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Nested block describing the request to use when displaying the widget.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Treemap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "widget_layout": { + "nesting_mode": "list", + "block": { + "attributes": { + "height": { + "type": "number", + "description": "The height of the widget.", + "description_kind": "plain", + "required": true + }, + "is_column_break": { + "type": "bool", + "description": "Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.", + "description_kind": "plain", + "optional": true + }, + "width": { + "type": "number", + "description": "The width of the widget.", + "description_kind": "plain", + "required": true + }, + "x": { + "type": "number", + "description": "The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.", + "description_kind": "plain", + "required": true + }, + "y": { + "type": "number", + "description": "The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.", + "description_kind": "plain", + "required": true + } + }, + "description": "The layout of the widget on a 'free' dashboard.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The list of widgets to display on the dashboard.", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog dashboard resource. This can be used to create and manage Datadog dashboards.", + "description_kind": "plain" + } + }, + "datadog_dashboard_json": { + "version": 0, + "block": { + "attributes": { + "dashboard": { + "type": "string", + "description": "The JSON formatted definition of the Dashboard.", + "description_kind": "plain", + "required": true + }, + "dashboard_lists": { + "type": [ + "set", + "number" + ], + "description": "A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior.", + "description_kind": "plain", + "optional": true + }, + "dashboard_lists_removed": { + "type": [ + "set", + "number" + ], + "description": "The list of dashboard lists this dashboard should be removed from. Internal only.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "url": { + "type": "string", + "description": "The URL of the dashboard.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Provides a Datadog dashboard JSON resource. This can be used to create and manage Datadog dashboards using the JSON definition.", + "description_kind": "plain" + } + }, + "datadog_dashboard_list": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Dashboard List", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "dash_item": { + "nesting_mode": "set", + "block": { + "attributes": { + "dash_id": { + "type": "string", + "description": "The ID of the dashboard to add", + "description_kind": "plain", + "required": true + }, + "type": { + "type": "string", + "description": "The type of this dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, `integration_screenboard`, `integration_timeboard`, `host_timeboard`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A set of dashboard items that belong to this list", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog dashboard_list resource. This can be used to create and manage Datadog Dashboard Lists and the individual dashboards within them.", + "description_kind": "plain" + } + }, + "datadog_downtime": { + "version": 0, + "block": { + "attributes": { + "active": { + "type": "bool", + "description": "When true indicates this downtime is being actively applied", + "description_kind": "plain", + "computed": true + }, + "active_child_id": { + "type": "number", + "description": "The id corresponding to the downtime object definition of the active child for the original parent recurring downtime. This field will only exist on recurring downtimes.", + "description_kind": "plain", + "computed": true + }, + "disabled": { + "type": "bool", + "description": "When true indicates this downtime is not being applied", + "description_kind": "plain", + "computed": true + }, + "end": { + "type": "number", + "description": "Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC.", + "description_kind": "plain", + "optional": true + }, + "end_date": { + "type": "string", + "description": "String representing date and time to end the downtime in RFC3339 format.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "message": { + "type": "string", + "description": "An optional message to provide when creating the downtime, can include notification handles", + "description_kind": "plain", + "optional": true + }, + "monitor_id": { + "type": "number", + "description": "When specified, this downtime will only apply to this monitor", + "description_kind": "plain", + "optional": true + }, + "monitor_tags": { + "type": [ + "set", + "string" + ], + "description": "A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced", + "description_kind": "plain", + "optional": true + }, + "mute_first_recovery_notification": { + "type": "bool", + "description": "When true the first recovery notification during the downtime will be muted Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description": "specify the group scope to which this downtime applies. For everything use '*'", + "description_kind": "plain", + "required": true + }, + "start": { + "type": "number", + "description": "Specify when this downtime should start. Accepts a Unix timestamp in UTC.", + "description_kind": "plain", + "optional": true + }, + "start_date": { + "type": "string", + "description": "String representing date and time to start the downtime in RFC3339 format.", + "description_kind": "plain", + "optional": true + }, + "timezone": { + "type": "string", + "description": "The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to `\"UTC\"`.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "recurrence": { + "nesting_mode": "list", + "block": { + "attributes": { + "period": { + "type": "number", + "description": "How often to repeat as an integer. For example to repeat every 3 days, select a `type` of `days` and a `period` of `3`.", + "description_kind": "plain", + "optional": true + }, + "rrule": { + "type": "string", + "description": "The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). Only applicable when `type` is `rrule`.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "One of `days`, `weeks`, `months`, `years`, or `rrule`.", + "description_kind": "plain", + "required": true + }, + "until_date": { + "type": "number", + "description": "The date at which the recurrence should end as a POSIX timestamp. `until_occurrences` and `until_date` are mutually exclusive.", + "description_kind": "plain", + "optional": true + }, + "until_occurrences": { + "type": "number", + "description": "How many times the downtime will be rescheduled. `until_occurrences` and `until_date` are mutually exclusive.", + "description_kind": "plain", + "optional": true + }, + "week_days": { + "type": [ + "list", + "string" + ], + "description": "A list of week days to repeat on. Choose from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. Only applicable when `type` is `weeks`. First letter must be capitalized.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Optional recurring schedule for this downtime", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "This resource is deprecated — use the `datadog_downtime_schedule resource` instead. Provides a Datadog downtime resource. This can be used to create and manage Datadog downtimes.", + "description_kind": "plain", + "deprecated": true + } + }, + "datadog_downtime_schedule": { + "version": 0, + "block": { + "attributes": { + "display_timezone": { + "type": "string", + "description": "The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "message": { + "type": "string", + "description": "A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same `@username` notation as events.", + "description_kind": "plain", + "optional": true + }, + "mute_first_recovery_notification": { + "type": "bool", + "description": "If the first recovery notification during a downtime should be muted.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "notify_end_states": { + "type": [ + "set", + "string" + ], + "description": "States that will trigger a monitor notification when the `notify_end_types` action occurs.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "notify_end_types": { + "type": [ + "set", + "string" + ], + "description": "Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": "string", + "description": "The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "monitor_identifier": { + "nesting_mode": "single", + "block": { + "attributes": { + "monitor_id": { + "type": "number", + "description": "ID of the monitor to prevent notifications.", + "description_kind": "plain", + "optional": true + }, + "monitor_tags": { + "type": [ + "set", + "string" + ], + "description": "A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags` to `[*]` configures the downtime to mute all monitors for the given scope.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "one_time_schedule": { + "nesting_mode": "single", + "block": { + "attributes": { + "end": { + "type": "string", + "description": "ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends.", + "description_kind": "plain", + "optional": true + }, + "start": { + "type": "string", + "description": "ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "recurring_schedule": { + "nesting_mode": "single", + "block": { + "attributes": { + "timezone": { + "type": "string", + "description": "The timezone in which to schedule the downtime.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "recurrence": { + "nesting_mode": "list", + "block": { + "attributes": { + "duration": { + "type": "string", + "description": "The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'.", + "description_kind": "plain", + "required": true + }, + "rrule": { + "type": "string", + "description": "The `RRULE` standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`. Most common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).", + "description_kind": "plain", + "required": true + }, + "start": { + "type": "string", + "description": "ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the downtime starts the moment it is created.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog DowntimeSchedule resource. This can be used to create and manage Datadog downtimes.", + "description_kind": "plain" + } + }, + "datadog_integration_aws": { + "version": 0, + "block": { + "attributes": { + "access_key_id": { + "type": "string", + "description": "Your AWS access key ID. Only required if your AWS account is a GovCloud or China account.", + "description_kind": "plain", + "optional": true + }, + "account_id": { + "type": "string", + "description": "Your AWS Account ID without dashes.", + "description_kind": "plain", + "optional": true + }, + "account_specific_namespace_rules": { + "type": [ + "map", + "bool" + ], + "description": "Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules).", + "description_kind": "plain", + "optional": true + }, + "cspm_resource_collection_enabled": { + "type": "string", + "description": "Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "excluded_regions": { + "type": [ + "set", + "string" + ], + "description": "An array of AWS regions to exclude from metrics collection.", + "description_kind": "plain", + "optional": true + }, + "external_id": { + "type": "string", + "description": "AWS External ID. **NOTE** This provider will not be able to detect changes made to the `external_id` field from outside Terraform.", + "description_kind": "plain", + "computed": true + }, + "filter_tags": { + "type": [ + "list", + "string" + ], + "description": "Array of EC2 tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from EC2. Wildcards, such as `?` (for single characters) and `*` (for multiple characters) can also be used. Only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. Host matching a given tag can also be excluded by adding `!` before the tag. e.x. `env:production,instance-type:c1.*,!region:us-east-1`.", + "description_kind": "plain", + "optional": true + }, + "host_tags": { + "type": [ + "list", + "string" + ], + "description": "Array of tags (in the form `key:value`) to add to all hosts and metrics reporting through this integration.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "metrics_collection_enabled": { + "type": "string", + "description": "Whether Datadog collects metrics for this AWS account.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "resource_collection_enabled": { + "type": "string", + "description": "Whether Datadog collects a standard set of resources from your AWS account.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role_name": { + "type": "string", + "description": "Your Datadog role delegation name.", + "description_kind": "plain", + "optional": true + }, + "secret_access_key": { + "type": "string", + "description": "Your AWS secret access key. Only required if your AWS account is a GovCloud or China account.", + "description_kind": "plain", + "optional": true, + "sensitive": true + } + }, + "description": "Provides a Datadog - Amazon Web Services integration resource. This can be used to create and manage Datadog - Amazon Web Services integration.\n\n", + "description_kind": "plain" + } + }, + "datadog_integration_aws_event_bridge": { + "version": 0, + "block": { + "attributes": { + "account_id": { + "type": "string", + "description": "Your AWS Account ID without dashes.", + "description_kind": "plain", + "required": true + }, + "create_event_bus": { + "type": "bool", + "description": "True if Datadog should create the event bus in addition to the event source. Requires the `events:CreateEventBus` permission. Defaults to `true`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "event_generator_name": { + "type": "string", + "description": "The given part of the event source name, which is then combined with an assigned suffix to form the full name.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "region": { + "type": "string", + "description": "The event source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints).", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog - Amazon Web Services integration EventBridge resource. This can be used to create and manage Event Sources for each Datadog integrated AWS account.", + "description_kind": "plain" + } + }, + "datadog_integration_aws_lambda_arn": { + "version": 0, + "block": { + "attributes": { + "account_id": { + "type": "string", + "description": "Your AWS Account ID without dashes.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lambda_arn": { + "type": "string", + "description": "The ARN of the Datadog forwarder Lambda.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog - Amazon Web Services integration Lambda ARN resource. This can be used to create and manage the log collection Lambdas for an account.\n\nUpdate operations are currently not supported with datadog API so any change forces a new resource.", + "description_kind": "plain" + } + }, + "datadog_integration_aws_log_collection": { + "version": 0, + "block": { + "attributes": { + "account_id": { + "type": "string", + "description": "Your AWS Account ID without dashes.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "services": { + "type": [ + "list", + "string" + ], + "description": "A list of services to collect logs from. See the [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) for more details on which services are supported.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog - Amazon Web Services integration log collection resource. This can be used to manage which AWS services logs are collected from for an account.", + "description_kind": "plain" + } + }, + "datadog_integration_aws_tag_filter": { + "version": 0, + "block": { + "attributes": { + "account_id": { + "type": "string", + "description": "Your AWS Account ID without dashes.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "namespace": { + "type": "string", + "description": "The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`.", + "description_kind": "plain", + "required": true + }, + "tag_filter_str": { + "type": "string", + "description": "The tag filter string.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog AWS tag filter resource. This can be used to create and manage Datadog AWS tag filters.", + "description_kind": "plain" + } + }, + "datadog_integration_azure": { + "version": 0, + "block": { + "attributes": { + "app_service_plan_filters": { + "type": "string", + "description": "This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "automute": { + "type": "bool", + "description": "Silence monitors for expected Azure VM shutdowns. Defaults to `false`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "client_id": { + "type": "string", + "description": "Your Azure web application ID.", + "description_kind": "plain", + "required": true + }, + "client_secret": { + "type": "string", + "description": "(Required for Initial Creation) Your Azure web application secret key.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "container_app_filters": { + "type": "string", + "description": "This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cspm_enabled": { + "type": "bool", + "description": "When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration.\nNote: This requires `resource_collection_enabled` to be set to true. Defaults to `false`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "custom_metrics_enabled": { + "type": "bool", + "description": "Enable custom metrics for your organization. Defaults to `false`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host_filters": { + "type": "string", + "description": "String of host tag(s) (in the form `key:value,key:value`) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. `env:production,deploymentgroup:red` Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "resource_collection_enabled": { + "type": "bool", + "description": "When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_name": { + "type": "string", + "description": "Your Azure Active Directory ID.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog - Microsoft Azure integration resource. This can be used to create and manage the integrations.", + "description_kind": "plain" + } + }, + "datadog_integration_cloudflare_account": { + "version": 0, + "block": { + "attributes": { + "api_key": { + "type": "string", + "description": "The API key (or token) for the Cloudflare account.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "email": { + "type": "string", + "description": "The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Cloudflare account.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog IntegrationCloudflareAccount resource. This can be used to create and manage Datadog integration_cloudflare_account.", + "description_kind": "plain" + } + }, + "datadog_integration_confluent_account": { + "version": 0, + "block": { + "attributes": { + "api_key": { + "type": "string", + "description": "The API key associated with your Confluent account.", + "description_kind": "plain", + "required": true + }, + "api_secret": { + "type": "string", + "description": "The API secret associated with your Confluent account.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Provides a Datadog IntegrationConfluentAccount resource. This can be used to create and manage Datadog integration_confluent_account.", + "description_kind": "plain" + } + }, + "datadog_integration_confluent_resource": { + "version": 0, + "block": { + "attributes": { + "account_id": { + "type": "string", + "description": "Confluent Account ID.", + "description_kind": "plain", + "required": true + }, + "enable_custom_metrics": { + "type": "bool", + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags. Defaults to `false`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "resource_id": { + "type": "string", + "description": "The ID associated with a Confluent resource.", + "description_kind": "plain", + "required": true + }, + "resource_type": { + "type": "string", + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Provides a Datadog IntegrationConfluentResource resource. This can be used to create and manage Datadog integration_confluent_resource.", + "description_kind": "plain" + } + }, + "datadog_integration_fastly_account": { + "version": 0, + "block": { + "attributes": { + "api_key": { + "type": "string", + "description": "The API key for the Fastly account.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Fastly account.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog IntegrationFastlyAccount resource. This can be used to create and manage Datadog integration_fastly_account.", + "description_kind": "plain" + } + }, + "datadog_integration_fastly_service": { + "version": 0, + "block": { + "attributes": { + "account_id": { + "type": "string", + "description": "Fastly Account id.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "service_id": { + "type": "string", + "description": "The ID of the Fastly service.", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "A list of tags for the Fastly service.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Provides a Datadog IntegrationFastlyService resource. This can be used to create and manage Datadog integration_fastly_service.", + "description_kind": "plain" + } + }, + "datadog_integration_gcp": { + "version": 0, + "block": { + "attributes": { + "automute": { + "type": "bool", + "description": "Silence monitors for expected GCE instance shutdowns. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "client_email": { + "type": "string", + "description": "Your email found in your JSON service account key.", + "description_kind": "plain", + "required": true + }, + "client_id": { + "type": "string", + "description": "Your ID found in your JSON service account key.", + "description_kind": "plain", + "required": true + }, + "cspm_resource_collection_enabled": { + "type": "bool", + "description": "Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "host_filters": { + "type": "string", + "description": "Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "private_key": { + "type": "string", + "description": "Your private key name found in your JSON service account key.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "private_key_id": { + "type": "string", + "description": "Your private key ID found in your JSON service account key.", + "description_kind": "plain", + "required": true + }, + "project_id": { + "type": "string", + "description": "Your Google Cloud project ID found in your JSON service account key.", + "description_kind": "plain", + "required": true + } + }, + "description": "This resource is deprecated — use the `datadog_integration_gcp_sts resource` instead. Provides a Datadog - Google Cloud Platform integration resource. This can be used to create and manage Datadog - Google Cloud Platform integration.", + "description_kind": "plain", + "deprecated": true + } + }, + "datadog_integration_gcp_sts": { + "version": 0, + "block": { + "attributes": { + "automute": { + "type": "bool", + "description": "Silence monitors for expected GCE instance shutdowns.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "client_email": { + "type": "string", + "description": "Your service account email address.", + "description_kind": "plain", + "required": true + }, + "delegate_account_email": { + "type": "string", + "description": "Datadog's STS Delegate Email.", + "description_kind": "plain", + "computed": true + }, + "host_filters": { + "type": [ + "set", + "string" + ], + "description": "Your Host Filters.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "is_cspm_enabled": { + "type": "bool", + "description": "When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Provides a Datadog Integration GCP Sts resource. This can be used to create and manage Datadog - Google Cloud Platform integration.", + "description_kind": "plain" + } + }, + "datadog_integration_opsgenie_service_object": { + "version": 0, + "block": { + "attributes": { + "custom_url": { + "type": "string", + "description": "The custom url for a custom region.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name for the Opsgenie service.", + "description_kind": "plain", + "required": true + }, + "opsgenie_api_key": { + "type": "string", + "description": "The Opsgenie API key for the Opsgenie service. Note: Since the Datadog API never returns Opsgenie API keys, it is impossible to detect [drifts](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform). The best way to solve a drift is to manually mark the Service Object resource with [terraform taint](https://www.terraform.io/docs/commands/taint.html) to have it destroyed and recreated.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "region": { + "type": "string", + "description": "The region for the Opsgenie service. Valid values are `us`, `eu`, `custom`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Resource for interacting with Datadog Opsgenie Service API.", + "description_kind": "plain" + } + }, + "datadog_integration_pagerduty": { + "version": 0, + "block": { + "attributes": { + "api_token": { + "type": "string", + "description": "Your PagerDuty API token.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "schedules": { + "type": [ + "list", + "string" + ], + "description": "Array of your schedule URLs.", + "description_kind": "plain", + "optional": true + }, + "subdomain": { + "type": "string", + "description": "Your PagerDuty account’s personalized subdomain name.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog - PagerDuty resource. This can be used to create and manage Datadog - PagerDuty integration. See also [PagerDuty Integration Guide](https://www.pagerduty.com/docs/guides/datadog-integration-guide/).", + "description_kind": "plain" + } + }, + "datadog_integration_pagerduty_service_object": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "service_key": { + "type": "string", + "description": "Your Service name associated service key in PagerDuty. This key may also be referred to as an Integration Key or Routing Key in the Pagerduty Integration [documentation](https://www.pagerduty.com/docs/guides/datadog-integration-guide/), UI, and within the [Pagerduty Provider for Terraform](https://registry.terraform.io/providers/PagerDuty/pagerduty/latest/docs/resources/service_integration#integration_key) Note: Since the Datadog API never returns service keys, it is impossible to detect [drifts](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform). The best way to solve a drift is to manually mark the Service Object resource with [terraform taint](https://www.terraform.io/docs/commands/taint.html) to have it destroyed and recreated.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "service_name": { + "type": "string", + "description": "Your Service name in PagerDuty.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides access to individual Service Objects of Datadog - PagerDuty integrations. Note that the Datadog - PagerDuty integration must be activated in the Datadog UI in order for this resource to be usable.", + "description_kind": "plain" + } + }, + "datadog_integration_slack_channel": { + "version": 0, + "block": { + "attributes": { + "account_name": { + "type": "string", + "description": "Slack account name.", + "description_kind": "plain", + "required": true + }, + "channel_name": { + "type": "string", + "description": "Slack channel name.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "display": { + "nesting_mode": "list", + "block": { + "attributes": { + "message": { + "type": "bool", + "description": "Show the main body of the alert event. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "notified": { + "type": "bool", + "description": "Show the list of @-handles in the alert event. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "snapshot": { + "type": "bool", + "description": "Show the alert event's snapshot image. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": "bool", + "description": "Show the scopes on which the monitor alerted. Defaults to `true`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Configuration options for what is shown in an alert event message.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Resource for interacting with the Datadog Slack channel API", + "description_kind": "plain" + } + }, + "datadog_ip_allowlist": { + "version": 0, + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether the IP Allowlist is enabled.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "entry": { + "nesting_mode": "set", + "block": { + "attributes": { + "cidr_block": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "note": { + "type": "string", + "description": "Note accompanying IP address.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note.", + "description_kind": "plain" + } + } + }, + "description": "Provides the Datadog IP allowlist resource. This can be used to manage the Datadog IP allowlist", + "description_kind": "plain" + } + }, + "datadog_logs_archive": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_tags": { + "type": "bool", + "description": "To store the tags in the archive, set the value `true`. If it is set to `false`, the tags will be dropped when the logs are sent to the archive. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Your archive name.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The archive query/filter. Logs matching this query are included in the archive.", + "description_kind": "plain", + "required": true + }, + "rehydration_max_scan_size_in_gb": { + "type": "number", + "description": "To limit the rehydration scan size for the archive, set a value in GB.", + "description_kind": "plain", + "optional": true + }, + "rehydration_tags": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to add to rehydrated logs from an archive.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "azure_archive": { + "nesting_mode": "list", + "block": { + "attributes": { + "client_id": { + "type": "string", + "description": "Your client id.", + "description_kind": "plain", + "required": true + }, + "container": { + "type": "string", + "description": "The container where the archive is stored.", + "description_kind": "plain", + "required": true + }, + "path": { + "type": "string", + "description": "The path where the archive is stored.", + "description_kind": "plain", + "optional": true + }, + "storage_account": { + "type": "string", + "description": "The associated storage account.", + "description_kind": "plain", + "required": true + }, + "tenant_id": { + "type": "string", + "description": "Your tenant id.", + "description_kind": "plain", + "required": true + } + }, + "description": "Definition of an azure archive.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "gcs_archive": { + "nesting_mode": "list", + "block": { + "attributes": { + "bucket": { + "type": "string", + "description": "Name of your GCS bucket.", + "description_kind": "plain", + "required": true + }, + "client_email": { + "type": "string", + "description": "Your client email.", + "description_kind": "plain", + "required": true + }, + "path": { + "type": "string", + "description": "Path where the archive is stored.", + "description_kind": "plain", + "optional": true + }, + "project_id": { + "type": "string", + "description": "Your project id.", + "description_kind": "plain", + "required": true + } + }, + "description": "Definition of a GCS archive.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "s3_archive": { + "nesting_mode": "list", + "block": { + "attributes": { + "account_id": { + "type": "string", + "description": "Your AWS account id.", + "description_kind": "plain", + "required": true + }, + "bucket": { + "type": "string", + "description": "Name of your s3 bucket.", + "description_kind": "plain", + "required": true + }, + "path": { + "type": "string", + "description": "Path where the archive is stored.", + "description_kind": "plain", + "optional": true + }, + "role_name": { + "type": "string", + "description": "Your AWS role name", + "description_kind": "plain", + "required": true + } + }, + "description": "Definition of an s3 archive.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog Logs Archive API resource, which is used to create and manage Datadog logs archives.", + "description_kind": "plain" + } + }, + "datadog_logs_archive_order": { + "version": 0, + "block": { + "attributes": { + "archive_ids": { + "type": [ + "list", + "string" + ], + "description": "The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If `archive_ids` is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Provides a Datadog [Logs Archive API](https://docs.datadoghq.com/api/v2/logs-archives/) resource, which is used to manage Datadog log archives order.", + "description_kind": "plain" + } + }, + "datadog_logs_custom_pipeline": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "Filter criteria of the category.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + }, + "processor": { + "nesting_mode": "list", + "block": { + "block_types": { + "arithmetic_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "expression": { + "type": "string", + "description": "Arithmetic operation between one or more log attributes.", + "description_kind": "plain", + "required": true + }, + "is_enabled": { + "type": "bool", + "description": "Boolean value to enable your pipeline.", + "description_kind": "plain", + "optional": true + }, + "is_replace_missing": { + "type": "bool", + "description": "If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Your pipeline name.", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "Name of the attribute that contains the result of the arithmetic operation.", + "description_kind": "plain", + "required": true + } + }, + "description": "Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "attribute_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "override_on_conflict": { + "type": "bool", + "description": "Override the target element if already set.", + "description_kind": "plain", + "optional": true + }, + "preserve_source": { + "type": "bool", + "description": "Remove or preserve the remapped source element.", + "description_kind": "plain", + "optional": true + }, + "source_type": { + "type": "string", + "description": "Defines where the sources are from (log `attribute` or `tag`).", + "description_kind": "plain", + "required": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes or tags.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Final attribute or tag name to remap the sources.", + "description_kind": "plain", + "required": true + }, + "target_format": { + "type": "string", + "description": "If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified.", + "description_kind": "plain", + "optional": true + }, + "target_type": { + "type": "string", + "description": "Defines if the target is a log `attribute` or `tag`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "category_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the category", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "Name of the target attribute whose value is defined by the matching category.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "category": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "Filter criteria of the category.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "List of filters to match or exclude a log with their corresponding name to assign a custom value to the log.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "date_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "geo_ip_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the parent attribute that contains all the extracted details from the sources.", + "description_kind": "plain", + "required": true + } + }, + "description": "Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "grok_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "samples": { + "type": [ + "list", + "string" + ], + "description": "List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters.", + "description_kind": "plain", + "optional": true + }, + "source": { + "type": "string", + "description": "Name of the log attribute to parse.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "grok": { + "nesting_mode": "list", + "block": { + "attributes": { + "match_rules": { + "type": "string", + "description": "Match rules for your grok parser.", + "description_kind": "plain", + "required": true + }, + "support_rules": { + "type": "string", + "description": "Support rules for your grok parser.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "lookup_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "default_lookup": { + "type": "string", + "description": "Default lookup value to use if there is no entry in the lookup table for the value of the source attribute.", + "description_kind": "plain", + "optional": true + }, + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "lookup_table": { + "type": [ + "list", + "string" + ], + "description": "List of entries of the lookup table using `key,value` format.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "source": { + "type": "string", + "description": "Name of the source attribute used to do the lookup.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the attribute that contains the result of the lookup.", + "description_kind": "plain", + "required": true + } + }, + "description": "Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "message_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "pipeline": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "Filter criteria of the category.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + }, + "processor": { + "nesting_mode": "list", + "block": { + "block_types": { + "arithmetic_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "expression": { + "type": "string", + "description": "Arithmetic operation between one or more log attributes.", + "description_kind": "plain", + "required": true + }, + "is_enabled": { + "type": "bool", + "description": "Boolean value to enable your pipeline.", + "description_kind": "plain", + "optional": true + }, + "is_replace_missing": { + "type": "bool", + "description": "If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Your pipeline name.", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "Name of the attribute that contains the result of the arithmetic operation.", + "description_kind": "plain", + "required": true + } + }, + "description": "Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "attribute_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "override_on_conflict": { + "type": "bool", + "description": "Override the target element if already set.", + "description_kind": "plain", + "optional": true + }, + "preserve_source": { + "type": "bool", + "description": "Remove or preserve the remapped source element.", + "description_kind": "plain", + "optional": true + }, + "source_type": { + "type": "string", + "description": "Defines where the sources are from (log `attribute` or `tag`).", + "description_kind": "plain", + "required": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes or tags.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Final attribute or tag name to remap the sources.", + "description_kind": "plain", + "required": true + }, + "target_format": { + "type": "string", + "description": "If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified.", + "description_kind": "plain", + "optional": true + }, + "target_type": { + "type": "string", + "description": "Defines if the target is a log `attribute` or `tag`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "category_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the category", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "Name of the target attribute whose value is defined by the matching category.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "category": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "Filter criteria of the category.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "List of filters to match or exclude a log with their corresponding name to assign a custom value to the log.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "date_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "geo_ip_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the parent attribute that contains all the extracted details from the sources.", + "description_kind": "plain", + "required": true + } + }, + "description": "Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "grok_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "samples": { + "type": [ + "list", + "string" + ], + "description": "List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters.", + "description_kind": "plain", + "optional": true + }, + "source": { + "type": "string", + "description": "Name of the log attribute to parse.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "grok": { + "nesting_mode": "list", + "block": { + "attributes": { + "match_rules": { + "type": "string", + "description": "Match rules for your grok parser.", + "description_kind": "plain", + "required": true + }, + "support_rules": { + "type": "string", + "description": "Support rules for your grok parser.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "lookup_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "default_lookup": { + "type": "string", + "description": "Default lookup value to use if there is no entry in the lookup table for the value of the source attribute.", + "description_kind": "plain", + "optional": true + }, + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "lookup_table": { + "type": [ + "list", + "string" + ], + "description": "List of entries of the lookup table using `key,value` format.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "source": { + "type": "string", + "description": "Name of the source attribute used to do the lookup.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the attribute that contains the result of the lookup.", + "description_kind": "plain", + "required": true + } + }, + "description": "Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "message_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "reference_table_lookup_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "lookup_enrichment_table": { + "type": "string", + "description": "Name of the Reference Table for the source attribute and their associated target attribute values.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "source": { + "type": "string", + "description": "Name of the source attribute used to do the lookup.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the attribute that contains the result of the lookup.", + "description_kind": "plain", + "required": true + } + }, + "description": "Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "service_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "status_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "string_builder_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "is_replace_missing": { + "type": "bool", + "description": "If it replaces all missing attributes of template by an empty string.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the processor.", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "The name of the attribute that contains the result of the template.", + "description_kind": "plain", + "required": true + }, + "template": { + "type": "string", + "description": "The formula with one or more attributes and raw text.", + "description_kind": "plain", + "required": true + } + }, + "description": "String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "trace_id_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "url_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "normalize_ending_slashes": { + "type": "bool", + "description": "Normalize the ending slashes or not.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the parent attribute that contains all the extracted details from the sources.", + "description_kind": "plain", + "required": true + } + }, + "description": "URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "user_agent_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "is_encoded": { + "type": "bool", + "description": "If the source attribute is URL encoded or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the parent attribute that contains all the extracted details from the sources.", + "description_kind": "plain", + "required": true + } + }, + "description": "User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser)", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "reference_table_lookup_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "lookup_enrichment_table": { + "type": "string", + "description": "Name of the Reference Table for the source attribute and their associated target attribute values.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "source": { + "type": "string", + "description": "Name of the source attribute used to do the lookup.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the attribute that contains the result of the lookup.", + "description_kind": "plain", + "required": true + } + }, + "description": "Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "service_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "status_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "string_builder_processor": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "is_replace_missing": { + "type": "bool", + "description": "If it replaces all missing attributes of template by an empty string.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the processor.", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "The name of the attribute that contains the result of the template.", + "description_kind": "plain", + "required": true + }, + "template": { + "type": "string", + "description": "The formula with one or more attributes and raw text.", + "description_kind": "plain", + "required": true + } + }, + "description": "String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "trace_id_remapper": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + } + }, + "description": "Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "url_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "normalize_ending_slashes": { + "type": "bool", + "description": "Normalize the ending slashes or not.", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the parent attribute that contains all the extracted details from the sources.", + "description_kind": "plain", + "required": true + } + }, + "description": "URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)", + "description_kind": "plain" + }, + "max_items": 1 + }, + "user_agent_parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "If the processor is enabled or not.", + "description_kind": "plain", + "optional": true + }, + "is_encoded": { + "type": "bool", + "description": "If the source attribute is URL encoded or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the processor", + "description_kind": "plain", + "optional": true + }, + "sources": { + "type": [ + "list", + "string" + ], + "description": "List of source attributes.", + "description_kind": "plain", + "required": true + }, + "target": { + "type": "string", + "description": "Name of the parent attribute that contains all the extracted details from the sources.", + "description_kind": "plain", + "required": true + } + }, + "description": "User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser)", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/) resource, which is used to create and manage Datadog logs custom pipelines. Each `datadog_logs_custom_pipeline` resource defines a complete pipeline. The order of the pipelines is maintained in a different resource: `datadog_logs_pipeline_order`. When creating a new pipeline, you need to **explicitly** add this pipeline to the `datadog_logs_pipeline_order` resource to track the pipeline. Similarly, when a pipeline needs to be destroyed, remove its references from the `datadog_logs_pipeline_order` resource.", + "description_kind": "plain" + } + }, + "datadog_logs_index": { + "version": 0, + "block": { + "attributes": { + "daily_limit": { + "type": "number", + "description": "The number of log events you can send in this index per day before you are rate-limited.", + "description_kind": "plain", + "optional": true + }, + "disable_daily_limit": { + "type": "bool", + "description": "If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the index.", + "description_kind": "plain", + "required": true + }, + "retention_days": { + "type": "number", + "description": "The number of days before logs are deleted from this index.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "exclusion_filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_enabled": { + "type": "bool", + "description": "A boolean stating if the exclusion is active or not.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the exclusion filter.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "Only logs matching the filter criteria and the query of the parent index will be considered for this exclusion filter.", + "description_kind": "plain", + "optional": true + }, + "sample_rate": { + "type": "number", + "description": "The fraction of logs excluded by the exclusion filter, when active.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description": "List of exclusion filters.", + "description_kind": "plain" + } + }, + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "Logs filter criteria. Only logs matching this filter criteria are considered for this index.", + "description_kind": "plain", + "required": true + } + }, + "description": "Logs filter", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Provides a Datadog Logs Index API resource. This can be used to create and manage Datadog logs indexes. \n**Note:** It is not possible to delete logs indexes through Terraform, so an index remains in your account after the resource is removed from your terraform config. Reach out to support to delete a logs index.", + "description_kind": "plain" + } + }, + "datadog_logs_index_order": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "The index resource list. Logs are tested against the query filter of each index one by one following the order of the list.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The unique name of the index order resource.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Provides a Datadog Logs Index API resource. This can be used to manage the order of Datadog logs indexes.", + "description_kind": "plain" + } + }, + "datadog_logs_integration_pipeline": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_enabled": { + "type": "bool", + "description": "Boolean value to enable your pipeline.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Provides a Datadog Logs Pipeline API resource to manage the integrations. Integration pipelines are the pipelines that are automatically installed for your organization when sending the logs with specific sources. You don't need to maintain or update these types of pipelines. Keeping them as resources, however, allows you to manage the order of your pipelines by referencing them in your `datadog_logs_pipeline_order` resource. If you don't need the `pipeline_order` feature, this resource declaration can be omitted.", + "description_kind": "plain" + } + }, + "datadog_logs_metric": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the log-based metric. This field can't be updated after creation.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation_type": { + "type": "string", + "description": "The type of aggregation to use. This field can't be updated after creation. Valid values are `count`, `distribution`.", + "description_kind": "plain", + "required": true + }, + "include_percentiles": { + "type": "bool", + "description": "Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an `aggregation_type` of distribution.", + "description_kind": "plain", + "optional": true + }, + "path": { + "type": "string", + "description": "The path to the value the log-based metric will aggregate on (only used if the aggregation type is a \"distribution\"). This field can't be updated after creation.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute rule to compute the log-based metric. This field can't be updated after creation.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The search query - following the log search syntax.", + "description_kind": "plain", + "required": true + } + }, + "description": "The log-based metric filter. Logs matching this filter will be aggregated in this metric.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "set", + "block": { + "attributes": { + "path": { + "type": "string", + "description": "The path to the value the log-based metric will be aggregated over.", + "description_kind": "plain", + "required": true + }, + "tag_name": { + "type": "string", + "description": "Name of the tag that gets created.", + "description_kind": "plain", + "required": true + } + }, + "description": "The rules for the group by.", + "description_kind": "plain" + } + } + }, + "description": "Resource for interacting with the logs_metric API", + "description_kind": "plain" + } + }, + "datadog_logs_pipeline_order": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name attribute in the resource `datadog_logs_pipeline_order` needs to be unique. It's recommended to use the same value as the resource name. No related field is available in [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order).", + "description_kind": "plain", + "required": true + }, + "pipelines": { + "type": [ + "list", + "string" + ], + "description": "The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog Logs Pipeline API resource, which is used to manage Datadog log pipelines order.", + "description_kind": "plain" + } + }, + "datadog_metric_metadata": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "A description of the metric.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "metric": { + "type": "string", + "description": "The name of the metric.", + "description_kind": "plain", + "required": true + }, + "per_unit": { + "type": "string", + "description": "Per unit of the metric such as `second` in `bytes per second`.", + "description_kind": "plain", + "optional": true + }, + "short_name": { + "type": "string", + "description": "A short name of the metric.", + "description_kind": "plain", + "optional": true + }, + "statsd_interval": { + "type": "number", + "description": "If applicable, statsd flush interval in seconds for the metric.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Metric type such as `count`, `gauge`, or `rate`. Updating a metric of type `distribution` is not supported. If you would like to see the `distribution` type returned, contact [Datadog support](https://docs.datadoghq.com/help/).", + "description_kind": "plain", + "optional": true + }, + "unit": { + "type": "string", + "description": "Primary unit of the metric such as `byte` or `operation`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Provides a Datadog metric_metadata resource. This can be used to manage a metric's metadata.", + "description_kind": "plain" + } + }, + "datadog_metric_tag_configuration": { + "version": 0, + "block": { + "attributes": { + "exclude_tags_mode": { + "type": "bool", + "description": "Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_percentiles": { + "type": "bool", + "description": "Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a `metric_type` of distribution.", + "description_kind": "plain", + "optional": true + }, + "metric_name": { + "type": "string", + "description": "The metric name for this resource.", + "description_kind": "plain", + "required": true + }, + "metric_type": { + "type": "string", + "description": "The metric's type. This field can't be updated after creation. Valid values are `gauge`, `count`, `rate`, `distribution`.", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "A list of tag keys that will be queryable for your metric.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "aggregations": { + "nesting_mode": "set", + "block": { + "attributes": { + "space": { + "type": "string", + "description": "A space aggregation for use in query. Valid values are `avg`, `max`, `min`, `sum`.", + "description_kind": "plain", + "required": true + }, + "time": { + "type": "string", + "description": "A time aggregation for use in query. Valid values are `avg`, `count`, `max`, `min`, `sum`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a `metric_type` of count, rate, or gauge.", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog metric tag configuration resource. This can be used to modify tag configurations for metrics.", + "description_kind": "plain" + } + }, + "datadog_monitor": { + "version": 0, + "block": { + "attributes": { + "enable_logs_sample": { + "type": "bool", + "description": "A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "enable_samples": { + "type": "bool", + "description": "Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors.", + "description_kind": "plain", + "computed": true + }, + "escalation_message": { + "type": "string", + "description": "A message to include with a re-notification. Supports the `@username` notification allowed elsewhere.", + "description_kind": "plain", + "optional": true + }, + "evaluation_delay": { + "type": "number", + "description": "(Only applies to metric alert) Time (in seconds) to delay evaluation, as a non-negative integer.\n\nFor example, if the value is set to `300` (5min), the `timeframe` is set to `last_5m` and the time is 7:00, the monitor will evaluate data from 6:50 to 6:55. This is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor will always have data during evaluation.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "force_delete": { + "type": "bool", + "description": "A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor).", + "description_kind": "plain", + "optional": true + }, + "group_retention_duration": { + "type": "string", + "description": "The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.", + "description_kind": "plain", + "optional": true + }, + "groupby_simple_monitor": { + "type": "bool", + "description": "Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_tags": { + "type": "bool", + "description": "A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "locked": { + "type": "bool", + "description": "A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to `false`. **Deprecated.** Use `restricted_roles`.", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "message": { + "type": "string", + "description": "A message to include with notifications for this monitor.\n\nEmail notifications can be sent to specific users by using the same `@username` notation as events.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Name of Datadog monitor.", + "description_kind": "plain", + "required": true + }, + "new_group_delay": { + "type": "number", + "description": "The time (in seconds) to skip evaluations for new groups.\n\n`new_group_delay` overrides `new_host_delay` if it is set to a nonzero value.", + "description_kind": "plain", + "optional": true + }, + "new_host_delay": { + "type": "number", + "description": "**Deprecated**. See `new_group_delay`. Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of monitor results. Should be a non-negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set `new_host_delay` to zero for monitors grouped by host. **Deprecated.** Use `new_group_delay` except when setting `new_host_delay` to zero. Defaults to `300`.", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "no_data_timeframe": { + "type": "number", + "description": "The number of minutes before a monitor will notify when data stops reporting.\n\nWe recommend at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks. Defaults to `10`.", + "description_kind": "plain", + "optional": true + }, + "notification_preset_name": { + "type": "string", + "description": "Toggles the display of additional content sent in the monitor notification. Valid values are `show_all`, `hide_query`, `hide_handles`, `hide_all`.", + "description_kind": "plain", + "optional": true + }, + "notify_audit": { + "type": "bool", + "description": "A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "notify_by": { + "type": [ + "set", + "string" + ], + "description": "Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert.", + "description_kind": "plain", + "optional": true + }, + "notify_no_data": { + "type": "bool", + "description": "A boolean indicating whether this monitor will notify when data stops reporting. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "on_missing_data": { + "type": "string", + "description": "Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`.", + "description_kind": "plain", + "optional": true + }, + "priority": { + "type": "number", + "description": "Integer from 1 (high) to 5 (low) indicating alert severity.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) for details. `terraform plan` will validate query contents unless `validate` is set to `false`.\n\n**Note:** APM latency data is now available as Distribution Metrics. Existing monitors have been migrated automatically but all terraformed monitors can still use the existing metrics. We strongly recommend updating monitor definitions to query the new metrics. To learn more, or to see examples of how to update your terraform definitions to utilize the new distribution metrics, see the [detailed doc](https://docs.datadoghq.com/tracing/guide/ddsketch_trace_metrics/).", + "description_kind": "plain", + "required": true + }, + "renotify_interval": { + "type": "number", + "description": "The number of minutes after the last notification before a monitor will re-notify on the current status. It will only re-notify if it's not resolved.", + "description_kind": "plain", + "optional": true + }, + "renotify_occurrences": { + "type": "number", + "description": "The number of re-notification messages that should be sent on the current status.", + "description_kind": "plain", + "optional": true + }, + "renotify_statuses": { + "type": [ + "set", + "string" + ], + "description": "The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`.", + "description_kind": "plain", + "optional": true + }, + "require_full_window": { + "type": "bool", + "description": "A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to `false` for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, `require_full_window` must be false and will be ignored. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "restricted_roles": { + "type": [ + "set", + "string" + ], + "description": "A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) in the `data.id` field.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API", + "description_kind": "plain", + "optional": true + }, + "timeout_h": { + "type": "number", + "description": "The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "The type of the monitor. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). Note: The monitor type cannot be changed after a monitor is created. Valid values are `composite`, `event alert`, `log alert`, `metric alert`, `process alert`, `query alert`, `rum alert`, `service check`, `synthetics alert`, `trace-analytics alert`, `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring alert`.", + "description_kind": "plain", + "required": true + }, + "validate": { + "type": "bool", + "description": "If set to `false`, skip the validation call done during plan.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "monitor_threshold_windows": { + "nesting_mode": "list", + "block": { + "attributes": { + "recovery_window": { + "type": "string", + "description": "Describes how long an anomalous metric must be normal before the alert recovers.", + "description_kind": "plain", + "optional": true + }, + "trigger_window": { + "type": "string", + "description": "Describes how long a metric must be anomalous before an alert triggers.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m` . Can only be used for, and are required for, anomaly monitors.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "monitor_thresholds": { + "nesting_mode": "list", + "block": { + "attributes": { + "critical": { + "type": "string", + "description": "The monitor `CRITICAL` threshold. Must be a number.", + "description_kind": "plain", + "optional": true + }, + "critical_recovery": { + "type": "string", + "description": "The monitor `CRITICAL` recovery threshold. Must be a number.", + "description_kind": "plain", + "optional": true + }, + "ok": { + "type": "string", + "description": "The monitor `OK` threshold. Only supported in monitor type `service check`. Must be a number.", + "description_kind": "plain", + "optional": true + }, + "unknown": { + "type": "string", + "description": "The monitor `UNKNOWN` threshold. Only supported in monitor type `service check`. Must be a number.", + "description_kind": "plain", + "optional": true + }, + "warning": { + "type": "string", + "description": "The monitor `WARNING` threshold. Must be a number.", + "description_kind": "plain", + "optional": true + }, + "warning_recovery": { + "type": "string", + "description": "The monitor `WARNING` recovery threshold. Must be a number.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Alert thresholds of the monitor.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "scheduling_options": { + "nesting_mode": "list", + "block": { + "block_types": { + "custom_schedule": { + "nesting_mode": "list", + "block": { + "block_types": { + "recurrence": { + "nesting_mode": "list", + "block": { + "attributes": { + "rrule": { + "type": "string", + "description": "Must be a valid `rrule`. See API docs for supported fields", + "description_kind": "plain", + "required": true + }, + "start": { + "type": "string", + "description": "Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss'", + "description_kind": "plain", + "optional": true + }, + "timezone": { + "type": "string", + "description": "'tz database' format. Example: `America/New_York` or `UTC`", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of recurrence definitions. Length must be 1.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Configuration options for the custom schedules. If `start` is omitted, the monitor creation time will be used.", + "description_kind": "plain" + } + }, + "evaluation_window": { + "nesting_mode": "list", + "block": { + "attributes": { + "day_starts": { + "type": "string", + "description": "The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in `HH:mm` format.", + "description_kind": "plain", + "optional": true + }, + "hour_starts": { + "type": "number", + "description": "The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59.", + "description_kind": "plain", + "optional": true + }, + "month_starts": { + "type": "number", + "description": "The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Configuration options for the evaluation window. If `hour_starts` is set, no other fields may be set. Otherwise, `day_starts` and `month_starts` must be set together.", + "description_kind": "plain" + } + } + }, + "description": "Configuration options for scheduling.", + "description_kind": "plain" + } + }, + "variables": { + "nesting_mode": "list", + "block": { + "block_types": { + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog monitor resource. This can be used to create and manage Datadog monitors.", + "description_kind": "plain" + } + }, + "datadog_monitor_config_policy": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_type": { + "type": "string", + "description": "The monitor config policy type Valid values are `tag`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "tag_policy": { + "nesting_mode": "list", + "block": { + "attributes": { + "tag_key": { + "type": "string", + "description": "The key of the tag", + "description_kind": "plain", + "required": true + }, + "tag_key_required": { + "type": "bool", + "description": "If a tag key is required for monitor creation", + "description_kind": "plain", + "required": true + }, + "valid_tag_values": { + "type": [ + "list", + "string" + ], + "description": "Valid values for the tag", + "description_kind": "plain", + "required": true + } + }, + "description": "Config for a tag policy. Only set if `policy_type` is `tag`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog monitor config policy resource. This can be used to create and manage Datadog monitor config policies.", + "description_kind": "plain" + } + }, + "datadog_monitor_json": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor": { + "type": "string", + "description": "The JSON formatted definition of the monitor.", + "description_kind": "plain", + "required": true + }, + "url": { + "type": "string", + "description": "The URL of the monitor.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Provides a Datadog monitor JSON resource. This can be used to create and manage Datadog monitors using the JSON definition.", + "description_kind": "plain" + } + }, + "datadog_organization_settings": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Description of the organization.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name for Organization.", + "description_kind": "plain", + "optional": true + }, + "public_id": { + "type": "string", + "description": "The `public_id` of the organization you are operating within.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "private_widget_share": { + "type": "bool", + "description": "Whether or not the organization users can share widgets outside of Datadog. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "saml_autocreate_access_role": { + "type": "string", + "description": "The access role of the user. Options are `st` (standard user), `adm` (admin user), or `ro` (read-only user). Allowed enum values: `st`, `adm` , `ro`, `ERROR` Defaults to `\"st\"`.", + "description_kind": "plain", + "optional": true + }, + "saml_can_be_enabled": { + "type": "bool", + "description": "Whether or not SAML can be enabled for this organization.", + "description_kind": "plain", + "computed": true + }, + "saml_idp_endpoint": { + "type": "string", + "description": "Identity provider endpoint for SAML authentication.", + "description_kind": "plain", + "computed": true + }, + "saml_idp_metadata_uploaded": { + "type": "bool", + "description": "Whether or not a SAML identity provider metadata file was provided to the Datadog organization.", + "description_kind": "plain", + "computed": true + }, + "saml_login_url": { + "type": "string", + "description": "URL for SAML logging.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "saml": { + "nesting_mode": "list", + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether or not SAML is enabled for this organization. Defaults to `false`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "SAML properties", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "saml_autocreate_users_domains": { + "nesting_mode": "list", + "block": { + "attributes": { + "domains": { + "type": [ + "list", + "string" + ], + "description": "List of domains where the SAML automated user creation is enabled.", + "description_kind": "plain", + "optional": true + }, + "enabled": { + "type": "bool", + "description": "Whether or not the automated user creation based on SAML domain is enabled. Defaults to `false`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "List of domains where the SAML automated user creation is enabled.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "saml_idp_initiated_login": { + "nesting_mode": "list", + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether or not a SAML identity provider metadata file was provided to the Datadog organization. Defaults to `false`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Whether or not a SAML identity provider metadata file was provided to the Datadog organization.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "saml_strict_mode": { + "nesting_mode": "list", + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. Defaults to `false`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Organization settings", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog Organization resource. This can be used to manage your Datadog organization's settings.", + "description_kind": "plain" + } + }, + "datadog_powerpack": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "The description of the powerpack.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name for the powerpack.", + "description_kind": "plain", + "optional": true + }, + "show_title": { + "type": "bool", + "description": "Whether or not title should be displayed in the powerpack.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "List of tags to identify this powerpack.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "layout": { + "nesting_mode": "list", + "block": { + "attributes": { + "height": { + "type": "number", + "description": "The height of the widget.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "width": { + "type": "number", + "description": "The width of the widget.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "x": { + "type": "number", + "description": "The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "y": { + "type": "number", + "description": "The position of the widget on the y (vertical) axis. Should be greater than or equal to 0.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The layout of the powerpack on a free-form dashboard.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "template_variables": { + "nesting_mode": "list", + "block": { + "attributes": { + "defaults": { + "type": [ + "list", + "string" + ], + "description": "One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with `OR`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the powerpack template variable.", + "description_kind": "plain", + "required": true + } + }, + "description": "The list of template variables for this powerpack.", + "description_kind": "plain" + } + }, + "widget": { + "nesting_mode": "list", + "block": { + "attributes": { + "id": { + "type": "number", + "description": "The ID of the widget.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "alert_graph_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "alert_id": { + "type": "string", + "description": "The ID of the monitor used by the widget.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "viz_type": { + "type": "string", + "description": "Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for a Alert Graph widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "alert_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "alert_id": { + "type": "string", + "description": "The ID of the monitor used by the widget.", + "description_kind": "plain", + "required": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the value. Use `*` for maximum precision.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the text in the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Alert Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "change_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "change_type": { + "type": "string", + "description": "Whether to show absolute or relative change. Valid values are `absolute`, `relative`.", + "description_kind": "plain", + "optional": true + }, + "compare_to": { + "type": "string", + "description": "Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.", + "description_kind": "plain", + "optional": true + }, + "increase_good": { + "type": "bool", + "description": "A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).", + "description_kind": "plain", + "optional": true + }, + "order_by": { + "type": "string", + "description": "What to order by. Valid values are `change`, `name`, `present`, `past`.", + "description_kind": "plain", + "optional": true + }, + "order_dir": { + "type": "string", + "description": "Widget sorting method. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + }, + "show_present": { + "type": "bool", + "description": "If set to `true`, displays the current value.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Change widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "check_status_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "check": { + "type": "string", + "description": "The check to use in the widget.", + "description_kind": "plain", + "required": true + }, + "group": { + "type": "string", + "description": "The check group to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.", + "description_kind": "plain", + "optional": true + }, + "grouping": { + "type": "string", + "description": "The kind of grouping to use. Valid values are `check`, `cluster`.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Check Status widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "distribution_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Distribution widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "event_size": { + "type": "string", + "description": "The size to use to display an event. Valid values are `s`, `l`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters, options: `and` or `or`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Event Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_timeline_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters, options: `and` or `or`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Event Timeline widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "free_text_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color": { + "type": "string", + "description": "The color of the text in the widget.", + "description_kind": "plain", + "optional": true + }, + "font_size": { + "type": "string", + "description": "The size of the text in the widget.", + "description_kind": "plain", + "optional": true + }, + "text": { + "type": "string", + "description": "The text to display in the widget.", + "description_kind": "plain", + "required": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the text in the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Free Text widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "geomap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette to apply to the widget.", + "description_kind": "plain", + "required": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "required": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "view": { + "nesting_mode": "list", + "block": { + "attributes": { + "focus": { + "type": "string", + "description": "The two-letter ISO code of a country to focus the map on (or `WORLD`).", + "description_kind": "plain", + "required": true + } + }, + "description": "The view of the world that the map should render.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for a Geomap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "heatmap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Heatmap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "hostmap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "group": { + "type": [ + "list", + "string" + ], + "description": "The list of tags to group nodes by.", + "description_kind": "plain", + "optional": true + }, + "no_group_hosts": { + "type": "bool", + "description": "A Boolean indicating whether to show ungrouped nodes.", + "description_kind": "plain", + "optional": true + }, + "no_metric_hosts": { + "type": "bool", + "description": "A Boolean indicating whether to show nodes with no metrics.", + "description_kind": "plain", + "optional": true + }, + "node_type": { + "type": "string", + "description": "The type of node used. Valid values are `host`, `container`.", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description": "The list of tags to filter nodes by.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "fill": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + }, + "size": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "fill_max": { + "type": "string", + "description": "The max value to use to color the map.", + "description_kind": "plain", + "optional": true + }, + "fill_min": { + "type": "string", + "description": "The min value to use to color the map.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + }, + "palette_flip": { + "type": "bool", + "description": "A Boolean indicating whether to flip the palette tones.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. One nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Hostmap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "iframe_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "url": { + "type": "string", + "description": "The URL to use as a data source for the widget.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for an Iframe widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "image_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_background": { + "type": "bool", + "description": "Whether to display a background or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "has_border": { + "type": "bool", + "description": "Whether to display a border or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "horizontal_align": { + "type": "string", + "description": "The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "margin": { + "type": "string", + "description": "The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.", + "description_kind": "plain", + "optional": true + }, + "sizing": { + "type": "string", + "description": "The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "The URL to use as a data source for the widget.", + "description_kind": "plain", + "required": true + }, + "url_dark_theme": { + "type": "string", + "description": "The URL in dark mode to use as a data source for the widget.", + "description_kind": "plain", + "optional": true + }, + "vertical_align": { + "type": "string", + "description": "The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for an Image widget", + "description_kind": "plain" + }, + "max_items": 1 + }, + "list_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "response_format": { + "type": "string", + "description": "Widget response format. Valid values are `event_list`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "field": { + "type": "string", + "description": "Widget column field.", + "description_kind": "plain", + "required": true + }, + "width": { + "type": "string", + "description": "Widget column width. Valid values are `auto`, `compact`, `full`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Widget columns.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.", + "description_kind": "plain", + "required": true + }, + "event_size": { + "type": "string", + "description": "Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.", + "description_kind": "plain", + "optional": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "List of indexes.", + "description_kind": "plain", + "optional": true + }, + "query_string": { + "type": "string", + "description": "Widget query.", + "description_kind": "plain", + "optional": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Updated list stream widget.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "The definition for a List Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_stream_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "columns": { + "type": [ + "list", + "string" + ], + "description": "Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.", + "description_kind": "plain", + "optional": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "message_display": { + "type": "string", + "description": "The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "optional": true + }, + "show_date_column": { + "type": "bool", + "description": "If the date column should be displayed.", + "description_kind": "plain", + "optional": true + }, + "show_message_column": { + "type": "bool", + "description": "If the message column should be displayed.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for an Log Stream widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "manage_status_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_preference": { + "type": "string", + "description": "Whether to colorize text or background. Valid values are `background`, `text`.", + "description_kind": "plain", + "optional": true + }, + "display_format": { + "type": "string", + "description": "The display setting to use. Valid values are `counts`, `countsAndList`, `list`.", + "description_kind": "plain", + "optional": true + }, + "hide_zero_counts": { + "type": "bool", + "description": "A Boolean indicating whether to hide empty categories.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "show_last_triggered": { + "type": "bool", + "description": "A Boolean indicating whether to show when monitors/groups last triggered.", + "description_kind": "plain", + "optional": true + }, + "show_priority": { + "type": "bool", + "description": "Whether to show the priorities column.", + "description_kind": "plain", + "optional": true + }, + "sort": { + "type": "string", + "description": "The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.", + "description_kind": "plain", + "optional": true + }, + "summary_type": { + "type": "string", + "description": "The summary type to use. Valid values are `monitors`, `groups`, `combined`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for an Manage Status widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "note_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "background_color": { + "type": "string", + "description": "The background color of the note.", + "description_kind": "plain", + "optional": true + }, + "content": { + "type": "string", + "description": "The content of the note.", + "description_kind": "plain", + "required": true + }, + "font_size": { + "type": "string", + "description": "The size of the text.", + "description_kind": "plain", + "optional": true + }, + "has_padding": { + "type": "bool", + "description": "Whether to add padding or not. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "show_tick": { + "type": "bool", + "description": "Whether to show a tick or not.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "tick_edge": { + "type": "string", + "description": "When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.", + "description_kind": "plain", + "optional": true + }, + "tick_pos": { + "type": "string", + "description": "When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.", + "description_kind": "plain", + "optional": true + }, + "vertical_align": { + "type": "string", + "description": "The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Note widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_table_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "has_search_bar": { + "type": "string", + "description": "Controls the display of the search bar. Valid values are `always`, `never`, `auto`.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "alias": { + "type": "string", + "description": "The alias for the column name (defaults to metric name).", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": [ + "list", + "string" + ], + "description": "A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of lines to show in the table.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The sort order for the rows. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "env": { + "type": "string", + "description": "The environment name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The operation name associated with the service.", + "description_kind": "plain", + "required": true + }, + "primary_tag": { + "type": "string", + "description": "The organization's host group name and value.", + "description_kind": "plain", + "required": true + }, + "resource": { + "type": "string", + "description": "The resource name.", + "description_kind": "plain", + "optional": true + }, + "row_type": { + "type": "string", + "description": "The level of detail for the request. Valid values are `service`, `resource`, `span`.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The service name.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "columns": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "A user-assigned alias for the column.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The column name.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Column properties used by the front end for display.", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Query Table widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query_value_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "autoscale": { + "type": "bool", + "description": "A Boolean indicating whether to automatically scale the tile.", + "description_kind": "plain", + "optional": true + }, + "custom_unit": { + "type": "string", + "description": "The unit for the value displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "precision": { + "type": "number", + "description": "The precision to use when displaying the tile.", + "description_kind": "plain", + "optional": true + }, + "text_align": { + "type": "string", + "description": "The alignment of the widget's text. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "timeseries_background": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Set a timeseries on the widget background.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Query Value widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "run_workflow_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "workflow_id": { + "type": "string", + "description": "Workflow ID", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "input": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "Name of the workflow input.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "Dashboard template variable. Can be suffixed with `.value` or `.key`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Array of workflow inputs to map to dashboard template variables.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Run Workflow widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "scatterplot_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "color_by_groups": { + "type": [ + "list", + "string" + ], + "description": "List of groups used for colors.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "scatterplot_table": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "dimension": { + "type": "string", + "description": "Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.", + "description_kind": "plain", + "required": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Scatterplot request containing formulas and functions.", + "description_kind": "plain" + } + }, + "x": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + }, + "y": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).", + "description_kind": "plain" + } + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "xaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Scatterplot widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "service_level_objective_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "global_time_target": { + "type": "string", + "description": "The global time target of the widget.", + "description_kind": "plain", + "optional": true + }, + "show_error_budget": { + "type": "bool", + "description": "Whether to show the error budget or not.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "The ID of the service level objective used by the widget.", + "description_kind": "plain", + "required": true + }, + "time_windows": { + "type": [ + "list", + "string" + ], + "description": "A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + }, + "view_mode": { + "type": "string", + "description": "The view mode for the widget. Valid values are `overall`, `component`, `both`.", + "description_kind": "plain", + "required": true + }, + "view_type": { + "type": "string", + "description": "The type of view to use when displaying the widget. Only `detail` is supported.", + "description_kind": "plain", + "required": true + } + }, + "description": "The definition for a Service Level Objective widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "servicemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "filters": { + "type": [ + "list", + "string" + ], + "description": "Your environment and primary tag (or `*` if enabled for your account).", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The ID of the service to map.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Service Map widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_list_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "request_type": { + "type": "string", + "description": "The request type for the SLO List request. Valid values are `slo_list`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "limit": { + "type": "number", + "description": "Maximum number of results to display in the table. Defaults to `100`.", + "description_kind": "plain", + "optional": true + }, + "query_string": { + "type": "string", + "description": "Widget query.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "column": { + "type": "string", + "description": "The facet path for the column.", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Updated SLO List widget.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "The definition for an SLO (Service Level Objective) List widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "sunburst_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_total": { + "type": "bool", + "description": "Whether or not to show the total value in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title. Default is 16.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "legend_inline": { + "nesting_mode": "list", + "block": { + "attributes": { + "hide_percent": { + "type": "bool", + "description": "Whether to hide the percentages of the groups.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Whether to hide the values of the groups.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "The type of legend (inline or automatic). Valid values are `inline`, `automatic`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the inline legend. Cannot be used in conjunction with legend_table.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "legend_table": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "The type of legend (table or none). Valid values are `table`, `none`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to configure the table legend. Cannot be used in conjunction with legend_inline.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define style for the widget's request.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Sunburst widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "timeseries_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "legend_columns": { + "type": [ + "set", + "string" + ], + "description": "A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.", + "description_kind": "plain", + "optional": true + }, + "legend_layout": { + "type": "string", + "description": "The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.", + "description_kind": "plain", + "optional": true + }, + "legend_size": { + "type": "string", + "description": "The size of the legend displayed in the widget.", + "description_kind": "plain", + "optional": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "show_legend": { + "type": "bool", + "description": "Whether or not to show the legend on this widget.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "event": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The event query to use in the widget.", + "description_kind": "plain", + "required": true + }, + "tags_execution": { + "type": "string", + "description": "The execution method for multi-value filters.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "marker": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "A label for the line or range.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_type": { + "type": "string", + "description": "How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.", + "description_kind": "plain", + "optional": true + }, + "on_right_yaxis": { + "type": "bool", + "description": "A Boolean indicating whether the request uses the right or left Y-Axis.", + "description_kind": "plain", + "optional": true + }, + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metadata": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias_name": { + "type": "string", + "description": "The expression alias.", + "description_kind": "plain", + "optional": true + }, + "expression": { + "type": "string", + "description": "The expression name.", + "description_kind": "plain", + "required": true + } + }, + "description": "Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "network_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "line_type": { + "type": "string", + "description": "The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.", + "description_kind": "plain", + "optional": true + }, + "line_width": { + "type": "string", + "description": "The width of line displayed. Valid values are `normal`, `thick`, `thin`.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The style of the widget graph. Exactly one `style` block is allowed using the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + }, + "right_yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "yaxis": { + "nesting_mode": "list", + "block": { + "attributes": { + "include_zero": { + "type": "bool", + "description": "Always include zero or fit the axis to the data range.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label of the axis to display on the graph.", + "description_kind": "plain", + "optional": true + }, + "max": { + "type": "string", + "description": "Specify the maximum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "min": { + "type": "string", + "description": "Specify the minimum value to show on the Y-axis.", + "description_kind": "plain", + "optional": true + }, + "scale": { + "type": "string", + "description": "Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing the Y-Axis Controls. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The definition for a Timeseries widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "toplist_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "q": { + "type": "string", + "description": "The metric query to use for this widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "apm_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "audit_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "log_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "filter_by": { + "type": [ + "list", + "string" + ], + "description": "A list of processes.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The max number of items in the filter list.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "Your chosen metric.", + "description_kind": "plain", + "required": true + }, + "search_by": { + "type": "string", + "description": "Your chosen search term.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query to use in the widget. The structure of this block is described below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "rum_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "security_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "index": { + "type": "string", + "description": "The name of the index to query.", + "description_kind": "plain", + "required": true + }, + "search_query": { + "type": "string", + "description": "The search query to use.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. The map keys are listed below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The maximum number of items in the group.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Widget sorting methods. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "required": true + } + }, + "description": "A list of exactly one element describing the sort query to use.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Multiple `group_by` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "multi_compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation method.", + "description_kind": "plain", + "required": true + }, + "facet": { + "type": "string", + "description": "The facet name.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Define the time interval in seconds.", + "description_kind": "plain", + "optional": true + } + }, + "description": "`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.", + "description_kind": "plain" + } + } + }, + "description": "The query to use for this widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Define request for the widget's style.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Toplist widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "topology_map_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "custom_link": { + "nesting_mode": "list", + "block": { + "attributes": { + "is_hidden": { + "type": "bool", + "description": "The flag for toggling context menu link visibility.", + "description_kind": "plain", + "optional": true + }, + "label": { + "type": "string", + "description": "The label for the custom link URL.", + "description_kind": "plain", + "optional": true + }, + "link": { + "type": "string", + "description": "The URL of the custom link.", + "description_kind": "plain", + "optional": true + }, + "override_label": { + "type": "string", + "description": "The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.", + "description_kind": "plain", + "optional": true + } + }, + "description": "A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "request": { + "nesting_mode": "list", + "block": { + "attributes": { + "request_type": { + "type": "string", + "description": "The request type for the Topology request ('topology'). Valid values are `topology`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.", + "description_kind": "plain", + "required": true + }, + "filters": { + "type": [ + "list", + "string" + ], + "description": "Your environment and primary tag (or `*` if enabled for your account).", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "The ID of the service to map.", + "description_kind": "plain", + "required": true + } + }, + "description": "The query for a Topology request.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Topology Map widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "trace_service_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "display_format": { + "type": "string", + "description": "The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.", + "description_kind": "plain", + "optional": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "live_span": { + "type": "string", + "description": "The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "show_breakdown": { + "type": "bool", + "description": "Whether to show the latency breakdown or not.", + "description_kind": "plain", + "optional": true + }, + "show_distribution": { + "type": "bool", + "description": "Whether to show the latency distribution or not.", + "description_kind": "plain", + "optional": true + }, + "show_errors": { + "type": "bool", + "description": "Whether to show the error metrics or not.", + "description_kind": "plain", + "optional": true + }, + "show_hits": { + "type": "bool", + "description": "Whether to show the hits metrics or not", + "description_kind": "plain", + "optional": true + }, + "show_latency": { + "type": "bool", + "description": "Whether to show the latency metrics or not.", + "description_kind": "plain", + "optional": true + }, + "show_resource_list": { + "type": "bool", + "description": "Whether to show the resource list or not.", + "description_kind": "plain", + "optional": true + }, + "size_format": { + "type": "string", + "description": "The size of the widget. Valid values are `small`, `medium`, `large`.", + "description_kind": "plain", + "optional": true + }, + "span_name": { + "type": "string", + "description": "APM span name", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + }, + "title_align": { + "type": "string", + "description": "The alignment of the widget's title. Valid values are `center`, `left`, `right`.", + "description_kind": "plain", + "optional": true + }, + "title_size": { + "type": "string", + "description": "The size of the widget's title (defaults to 16).", + "description_kind": "plain", + "optional": true + } + }, + "description": "The definition for a Trace Service widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "treemap_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "title": { + "type": "string", + "description": "The title of the widget.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "request": { + "nesting_mode": "list", + "block": { + "block_types": { + "formula": { + "nesting_mode": "list", + "block": { + "attributes": { + "alias": { + "type": "string", + "description": "An expression alias.", + "description_kind": "plain", + "optional": true + }, + "cell_display_mode": { + "type": "string", + "description": "A list of display modes for each table cell. Valid values are `number`, `bar`.", + "description_kind": "plain", + "optional": true + }, + "formula_expression": { + "type": "string", + "description": "A string expression built from queries, formulas, and functions.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "conditional_formats": { + "nesting_mode": "list", + "block": { + "attributes": { + "comparator": { + "type": "string", + "description": "The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.", + "description_kind": "plain", + "required": true + }, + "custom_bg_color": { + "type": "string", + "description": "The color palette to apply to the background, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "custom_fg_color": { + "type": "string", + "description": "The color palette to apply to the foreground, same values available as palette.", + "description_kind": "plain", + "optional": true + }, + "hide_value": { + "type": "bool", + "description": "Setting this to True hides values.", + "description_kind": "plain", + "optional": true + }, + "image_url": { + "type": "string", + "description": "Displays an image as the background.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The metric from the request to correlate with this conditional format.", + "description_kind": "plain", + "optional": true + }, + "palette": { + "type": "string", + "description": "The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.", + "description_kind": "plain", + "required": true + }, + "timeframe": { + "type": "string", + "description": "Defines the displayed timeframe.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "number", + "description": "A value for the comparator.", + "description_kind": "plain", + "required": true + } + }, + "description": "Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.", + "description_kind": "plain" + } + }, + "limit": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "The number of results to return.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for limiting results returned.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "style": { + "nesting_mode": "list", + "block": { + "attributes": { + "palette": { + "type": "string", + "description": "The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.", + "description_kind": "plain", + "optional": true + }, + "palette_index": { + "type": "number", + "description": "Index specifying which color to use within the palette.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Styling options for widget formulas.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "query": { + "nesting_mode": "list", + "block": { + "block_types": { + "apm_dependency_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "is_upstream": { + "type": "bool", + "description": "Determines whether stats for upstream or downstream dependencies should be queried.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "required": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "required": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Dependency Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "apm_resource_stats_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.", + "description_kind": "plain", + "required": true + }, + "env": { + "type": "string", + "description": "APM environment.", + "description_kind": "plain", + "required": true + }, + "group_by": { + "type": [ + "list", + "string" + ], + "description": "Array of fields to group results by.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "operation_name": { + "type": "string", + "description": "Name of operation on service.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_name": { + "type": "string", + "description": "The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.", + "description_kind": "plain", + "optional": true + }, + "primary_tag_value": { + "type": "string", + "description": "Filter APM data by the second primary tag. `primary_tag_name` must also be specified.", + "description_kind": "plain", + "optional": true + }, + "resource_name": { + "type": "string", + "description": "APM resource.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "APM service.", + "description_kind": "plain", + "required": true + }, + "stat": { + "type": "string", + "description": "APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.", + "description_kind": "plain", + "required": true + } + }, + "description": "The APM Resource Stats query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "cloud_cost_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for cloud cost queries. Valid values are `cloud_cost`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The cloud cost query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "The Cloud Cost query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "event_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "data_source": { + "type": "string", + "description": "The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.", + "description_kind": "plain", + "required": true + }, + "indexes": { + "type": [ + "list", + "string" + ], + "description": "An array of index names to query in the stream.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "storage": { + "type": "string", + "description": "Storage location (private beta).", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "interval": { + "type": "number", + "description": "A time interval in milliseconds.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The measurable attribute to compute.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The compute options.", + "description_kind": "plain" + }, + "min_items": 1 + }, + "group_by": { + "nesting_mode": "list", + "block": { + "attributes": { + "facet": { + "type": "string", + "description": "The event facet.", + "description_kind": "plain", + "required": true + }, + "limit": { + "type": "number", + "description": "The number of groups to return.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "sort": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.", + "description_kind": "plain", + "required": true + }, + "metric": { + "type": "string", + "description": "The metric used for sorting group by results.", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description": "Direction of sort. Valid values are `asc`, `desc`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The options for sorting group by results.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Group by options.", + "description_kind": "plain" + } + }, + "search": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The events search string.", + "description_kind": "plain", + "required": true + } + }, + "description": "The search options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "A timeseries formula and functions events query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "metric_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for metrics queries. Defaults to `\"metrics\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The metrics query definition.", + "description_kind": "plain", + "required": true + } + }, + "description": "A timeseries formula and functions metrics query.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "process_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregator": { + "type": "string", + "description": "The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for process queries. Valid values are `process`, `container`.", + "description_kind": "plain", + "required": true + }, + "is_normalized_cpu": { + "type": "bool", + "description": "Whether to normalize the CPU percentages.", + "description_kind": "plain", + "optional": true + }, + "limit": { + "type": "number", + "description": "The number of hits to return.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The process metric name.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "required": true + }, + "sort": { + "type": "string", + "description": "The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.", + "description_kind": "plain", + "optional": true + }, + "tag_filters": { + "type": [ + "list", + "string" + ], + "description": "An array of tags to filter by.", + "description_kind": "plain", + "optional": true + }, + "text_filter": { + "type": "string", + "description": "The text to use as a filter.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The process query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "slo_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "additional_query_filters": { + "type": "string", + "description": "Additional filters applied to the SLO query.", + "description_kind": "plain", + "optional": true + }, + "data_source": { + "type": "string", + "description": "The data source for SLO queries. Valid values are `slo`.", + "description_kind": "plain", + "required": true + }, + "group_mode": { + "type": "string", + "description": "Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.", + "description_kind": "plain", + "optional": true + }, + "measure": { + "type": "string", + "description": "SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of query for use in formulas.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of an SLO to query.", + "description_kind": "plain", + "required": true + }, + "slo_query_type": { + "type": "string", + "description": "type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The SLO query using formulas and functions.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + } + }, + "description": "Nested block describing the request to use when displaying the widget.", + "description_kind": "plain" + } + } + }, + "description": "The definition for a Treemap widget.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "widget_layout": { + "nesting_mode": "list", + "block": { + "attributes": { + "height": { + "type": "number", + "description": "The height of the widget.", + "description_kind": "plain", + "required": true + }, + "is_column_break": { + "type": "bool", + "description": "Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.", + "description_kind": "plain", + "optional": true + }, + "width": { + "type": "number", + "description": "The width of the widget.", + "description_kind": "plain", + "required": true + }, + "x": { + "type": "number", + "description": "The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.", + "description_kind": "plain", + "required": true + }, + "y": { + "type": "number", + "description": "The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.", + "description_kind": "plain", + "required": true + } + }, + "description": "The layout of the widget on a 'free' dashboard.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "The list of widgets to display in the powerpack.", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog powerpack resource. This can be used to create and manage Datadog powerpacks.", + "description_kind": "plain" + } + }, + "datadog_restriction_policy": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "resource_id": { + "type": "string", + "description": "Identifier for the resource, formatted as resource_type:resource_id.\n\nNote: Dashboards support is in private beta. Reach out to your Datadog contact or support to enable this.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "bindings": { + "nesting_mode": "set", + "block": { + "attributes": { + "principals": { + "type": [ + "set", + "string" + ], + "description": "An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role` and `org`. The org ID can be obtained through the api/v2/users API.", + "description_kind": "plain", + "required": true + }, + "relation": { + "type": "string", + "description": "The role/level of access. See this page for more details https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog RestrictionPolicy resource. This can be used to create and manage Datadog restriction policies.", + "description_kind": "plain" + } + }, + "datadog_role": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the role.", + "description_kind": "plain", + "required": true + }, + "user_count": { + "type": "number", + "description": "Number of users that have this role.", + "description_kind": "plain", + "computed": true + }, + "validate": { + "type": "bool", + "description": "If set to `false`, skip the validation call done during plan.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "permission": { + "nesting_mode": "set", + "block": { + "attributes": { + "id": { + "type": "string", + "description": "ID of the permission to assign.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Name of the permission.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Set of objects containing the permission ID and the name of the permissions granted to this role.", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog role resource. This can be used to create and manage Datadog roles.", + "description_kind": "plain" + } + }, + "datadog_rum_application": { + "version": 0, + "block": { + "attributes": { + "client_token": { + "type": "string", + "description": "The client token.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the RUM application.", + "description_kind": "plain", + "required": true + }, + "type": { + "type": "string", + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`. Defaults to `\"browser\"`.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Provides a Datadog RUM application resource. This can be used to create and manage Datadog RUM applications.", + "description_kind": "plain" + } + }, + "datadog_security_monitoring_default_rule": { + "version": 0, + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Enable the rule. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description": "The rule type.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "case": { + "nesting_mode": "list", + "block": { + "attributes": { + "notifications": { + "type": [ + "list", + "string" + ], + "description": "Notification targets for each rule case.", + "description_kind": "plain", + "required": true + }, + "status": { + "type": "string", + "description": "Status of the rule case to match. Valid values are `info`, `low`, `medium`, `high`, `critical`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Cases of the rule, this is used to update notifications.", + "description_kind": "plain" + }, + "max_items": 10 + }, + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "action": { + "type": "string", + "description": "The type of filtering action. Allowed enum values: require, suppress Valid values are `require`, `suppress`.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "Query for selecting logs to apply the filtering action.", + "description_kind": "plain", + "required": true + } + }, + "description": "Additional queries to filter matched events before they are processed.", + "description_kind": "plain" + } + }, + "options": { + "nesting_mode": "list", + "block": { + "attributes": { + "decrease_criticality_based_on_env": { + "type": "bool", + "description": "If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Options on default rules. Note that only a subset of fields can be updated on default rule options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog Security Monitoring Rule API resource for default rules. It can only be imported, you can't create a default rule.", + "description_kind": "plain" + } + }, + "datadog_security_monitoring_filter": { + "version": 0, + "block": { + "attributes": { + "filtered_data_type": { + "type": "string", + "description": "The filtered data type. Valid values are `logs`. Defaults to `\"logs\"`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_enabled": { + "type": "bool", + "description": "Whether the security filter is enabled.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the security filter.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "The query of the security filter.", + "description_kind": "plain", + "required": true + }, + "version": { + "type": "number", + "description": "The version of the security filter.", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "exclusion_filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "name": { + "type": "string", + "description": "Exclusion filter name.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "Exclusion filter query. Logs that match this query are excluded from the security filter.", + "description_kind": "plain", + "required": true + } + }, + "description": "Exclusion filters to exclude some logs from the security filter.", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog Security Monitoring Rule API resource for security filters.", + "description_kind": "plain" + } + }, + "datadog_security_monitoring_rule": { + "version": 0, + "block": { + "attributes": { + "enabled": { + "type": "bool", + "description": "Whether the rule is enabled. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "has_extended_title": { + "type": "bool", + "description": "Whether the notifications include the triggering group-by values in their title. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "message": { + "type": "string", + "description": "Message for generated signals.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the rule.", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "Tags for generated signals.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `\"log_detection\"`.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "case": { + "nesting_mode": "list", + "block": { + "attributes": { + "condition": { + "type": "string", + "description": "A rule case contains logical operations (`\u003e`,`\u003e=`, `\u0026\u0026`, `||`) to determine if a signal should be generated based on the event counts in the previously defined queries.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the case.", + "description_kind": "plain", + "optional": true + }, + "notifications": { + "type": [ + "list", + "string" + ], + "description": "Notification targets for each rule case.", + "description_kind": "plain", + "optional": true + }, + "status": { + "type": "string", + "description": "Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Cases for generating signals.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 10 + }, + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "action": { + "type": "string", + "description": "The type of filtering action. Valid values are `require`, `suppress`.", + "description_kind": "plain", + "required": true + }, + "query": { + "type": "string", + "description": "Query for selecting logs to apply the filtering action.", + "description_kind": "plain", + "required": true + } + }, + "description": "Additional queries to filter matched events before they are processed.", + "description_kind": "plain" + } + }, + "options": { + "nesting_mode": "list", + "block": { + "attributes": { + "decrease_criticality_based_on_env": { + "type": "bool", + "description": "If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "detection_method": { + "type": "string", + "description": "The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `\"threshold\"`.", + "description_kind": "plain", + "optional": true + }, + "evaluation_window": { + "type": "number", + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`.", + "description_kind": "plain", + "optional": true + }, + "keep_alive": { + "type": "number", + "description": "Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`.", + "description_kind": "plain", + "required": true + }, + "max_signal_duration": { + "type": "number", + "description": "A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "impossible_travel_options": { + "nesting_mode": "list", + "block": { + "attributes": { + "baseline_user_locations": { + "type": "bool", + "description": "If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to `false`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Options for rules using the impossible travel detection method.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "new_value_options": { + "nesting_mode": "list", + "block": { + "attributes": { + "forget_after": { + "type": "number", + "description": "The duration in days after which a learned value is forgotten. Valid values are `1`, `2`, `7`, `14`, `21`, `28`.", + "description_kind": "plain", + "required": true + }, + "learning_duration": { + "type": "number", + "description": "The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are `0`, `1`, `7`. Defaults to `1`.", + "description_kind": "plain", + "optional": true + }, + "learning_method": { + "type": "string", + "description": "The learning method used to determine when signals should be generated for values that weren't learned. Valid values are `duration`, `threshold`. Defaults to `\"duration\"`.", + "description_kind": "plain", + "optional": true + }, + "learning_threshold": { + "type": "number", + "description": "A number of occurrences after which signals are generated for values that weren't learned. Valid values are `0`, `1`. Defaults to `0`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "New value rules specific options.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Options on rules.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `\"count\"`.", + "description_kind": "plain", + "optional": true + }, + "distinct_fields": { + "type": [ + "list", + "string" + ], + "description": "Field for which the cardinality is measured. Sent as an array.", + "description_kind": "plain", + "optional": true + }, + "group_by_fields": { + "type": [ + "list", + "string" + ], + "description": "Fields to group by.", + "description_kind": "plain", + "optional": true + }, + "metric": { + "type": "string", + "description": "The target field to aggregate over when using the `sum`, `max`, or `geo_data` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider.", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "metrics": { + "type": [ + "list", + "string" + ], + "description": "Group of target fields to aggregate over when using the `sum`, `max`, `geo_data`, or `new_value` aggregations. The `sum`, `max`, and `geo_data` aggregations only accept one value in this list, whereas the `new_value` aggregation accepts up to five values.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the query. Not compatible with `new_value` aggregations.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "Query to run on logs.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "agent_rule": { + "nesting_mode": "list", + "block": { + "attributes": { + "agent_rule_id": { + "type": "string", + "description": "**Deprecated**. It won't be applied anymore.", + "description_kind": "plain", + "required": true + }, + "expression": { + "type": "string", + "description": "**Deprecated**. It won't be applied anymore.", + "description_kind": "plain", + "required": true + } + }, + "description": "**Deprecated**. It won't be applied anymore. **Deprecated.** `agent_rule` has been deprecated in favor of new Agent Rule resource.", + "description_kind": "plain", + "deprecated": true + } + } + }, + "description": "Queries for selecting logs which are part of the rule.", + "description_kind": "plain" + } + }, + "signal_query": { + "nesting_mode": "list", + "block": { + "attributes": { + "aggregation": { + "type": "string", + "description": "The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `\"event_count\"`.", + "description_kind": "plain", + "optional": true + }, + "correlated_by_fields": { + "type": [ + "list", + "string" + ], + "description": "Fields to correlate by.", + "description_kind": "plain", + "optional": true + }, + "correlated_query_index": { + "type": "string", + "description": "Index of the rule query used to retrieve the correlated field. An empty string applies correlation on the non-projected per query attributes of the rule. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "default_rule_id": { + "type": "string", + "description": "Default Rule ID of the signal to correlate. This value is READ-ONLY.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the query. Not compatible with `new_value` aggregations.", + "description_kind": "plain", + "optional": true + }, + "rule_id": { + "type": "string", + "description": "Rule ID of the signal to correlate.", + "description_kind": "plain", + "required": true + } + }, + "description": "Queries for selecting logs which are part of the rule.", + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog Security Monitoring Rule API resource. This can be used to create and manage Datadog security monitoring rules. To change settings for a default rule use `datadog_security_default_rule` instead.", + "description_kind": "plain" + } + }, + "datadog_sensitive_data_scanner_group": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Description of the Datadog scanning group.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_enabled": { + "type": "bool", + "description": "Whether or not the scanning group is enabled. If the group doesn't contain any rule or if all the rules in it are disabled, the group is force-disabled by our backend", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "Name of the Datadog scanning group.", + "description_kind": "plain", + "required": true + }, + "product_list": { + "type": [ + "set", + "string" + ], + "description": "List of products the scanning group applies. Valid values are `logs`, `rum`, `events`, `apm`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "Query to filter the events.", + "description_kind": "plain", + "required": true + } + }, + "description": "Filter object the scanning group applies.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Provides a Sensitive Data Scanner group resource.", + "description_kind": "plain" + } + }, + "datadog_sensitive_data_scanner_group_order": { + "version": 0, + "block": { + "attributes": { + "group_ids": { + "type": [ + "list", + "string" + ], + "description": "The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog Sensitive Data Scanner Group Order API resource. This can be used to manage the order of Datadog Sensitive Data Scanner Groups.", + "description_kind": "plain" + } + }, + "datadog_sensitive_data_scanner_rule": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Description of the rule.", + "description_kind": "plain", + "optional": true + }, + "excluded_namespaces": { + "type": [ + "list", + "string" + ], + "description": "Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array.", + "description_kind": "plain", + "optional": true + }, + "group_id": { + "type": "string", + "description": "Id of the scanning group the rule belongs to.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_enabled": { + "type": "bool", + "description": "Whether or not the rule is enabled.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the rule.", + "description_kind": "plain", + "optional": true + }, + "namespaces": { + "type": [ + "list", + "string" + ], + "description": "Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned.", + "description_kind": "plain", + "optional": true + }, + "pattern": { + "type": "string", + "description": "Not included if there is a relationship to a standard pattern.", + "description_kind": "plain", + "optional": true + }, + "standard_pattern_id": { + "type": "string", + "description": "Id of the standard pattern the rule refers to. If provided, then pattern must not be provided.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "List of tags.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "text_replacement": { + "nesting_mode": "list", + "block": { + "attributes": { + "number_of_chars": { + "type": "number", + "description": "Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be \u003e 0.", + "description_kind": "plain", + "optional": true + }, + "replacement_string": { + "type": "string", + "description": "Required if type == 'replacement_string'.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are `none`, `hash`, `replacement_string`, `partial_replacement_from_beginning`, `partial_replacement_from_end`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Object describing how the scanned event will be replaced. Defaults to `type: none`", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule.", + "description_kind": "plain" + } + }, + "datadog_service_account": { + "version": 0, + "block": { + "attributes": { + "disabled": { + "type": "bool", + "description": "Whether the service account is disabled. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "email": { + "type": "string", + "description": "Email of the associated user.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name for the service account.", + "description_kind": "plain", + "optional": true + }, + "roles": { + "type": [ + "set", + "string" + ], + "description": "A list a role IDs to assign to the service account.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Provides a Datadog service account resource. This can be used to create and manage Datadog service accounts.", + "description_kind": "plain" + } + }, + "datadog_service_account_application_key": { + "version": 0, + "block": { + "attributes": { + "created_at": { + "type": "string", + "description": "Creation date of the application key.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "key": { + "type": "string", + "description": "The value of the service account application key. This value cannot be imported.", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "last4": { + "type": "string", + "description": "The last four characters of the application key.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the application key.", + "description_kind": "plain", + "required": true + }, + "service_account_id": { + "type": "string", + "description": "ID of the service account that owns this key.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog `service_account_application_key` resource. This can be used to create and manage Datadog service account application keys.", + "description_kind": "plain" + } + }, + "datadog_service_definition_yaml": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "service_definition": { + "type": "string", + "description": "The YAML/JSON formatted definition of the service", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog service definition resource. This can be used to create and manage Datadog service definitions in the service catalog using the YAML/JSON definition.", + "description_kind": "plain" + } + }, + "datadog_service_level_objective": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "A description of this service level objective.", + "description_kind": "plain", + "optional": true + }, + "force_delete": { + "type": "bool", + "description": "A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards).", + "description_kind": "plain", + "optional": true + }, + "groups": { + "type": [ + "set", + "string" + ], + "description": "A static set of groups to filter monitor-based SLOs", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_ids": { + "type": [ + "set", + "number" + ], + "description": "A static set of monitor IDs to use as part of the SLO", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of Datadog service level objective", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API", + "description_kind": "plain", + "optional": true + }, + "target_threshold": { + "type": "number", + "description": "The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeframe": { + "type": "string", + "description": "The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description": "The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Valid values are `metric`, `monitor`, `time_slice`.", + "description_kind": "plain", + "required": true + }, + "validate": { + "type": "bool", + "description": "Whether or not to validate the SLO.", + "description_kind": "plain", + "optional": true + }, + "warning_threshold": { + "type": "number", + "description": "The objective's warning value in `(0,100)`. This must be greater than the target value and match the corresponding thresholds of the primary time frame.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "query": { + "nesting_mode": "list", + "block": { + "attributes": { + "denominator": { + "type": "string", + "description": "The sum of the `total` events.", + "description_kind": "plain", + "required": true + }, + "numerator": { + "type": "string", + "description": "The sum of all the `good` events.", + "description_kind": "plain", + "required": true + } + }, + "description": "The metric query of good / total events", + "description_kind": "plain" + }, + "max_items": 1 + }, + "thresholds": { + "nesting_mode": "list", + "block": { + "attributes": { + "target": { + "type": "number", + "description": "The objective's target in `(0,100)`.", + "description_kind": "plain", + "required": true + }, + "target_display": { + "type": "string", + "description": "A string representation of the target that indicates its precision. It uses trailing zeros to show significant decimal places (e.g. `98.00`).", + "description_kind": "plain", + "computed": true + }, + "timeframe": { + "type": "string", + "description": "The time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`.", + "description_kind": "plain", + "required": true + }, + "warning": { + "type": "number", + "description": "The objective's warning value in `(0,100)`. This must be greater than the target value.", + "description_kind": "plain", + "optional": true + }, + "warning_display": { + "type": "string", + "description": "A string representation of the warning target (see the description of the target_display field for details).", + "description_kind": "plain", + "computed": true + } + }, + "description": "A list of thresholds and targets that define the service level objectives from the provided SLIs.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives.", + "description_kind": "plain" + } + }, + "datadog_slo_correction": { + "version": 0, + "block": { + "attributes": { + "category": { + "type": "string", + "description": "Category the SLO correction belongs to. Valid values are `Scheduled Maintenance`, `Outside Business Hours`, `Deployment`, `Other`.", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description": "Description of the correction being made.", + "description_kind": "plain", + "optional": true + }, + "duration": { + "type": "number", + "description": "Length of time in seconds for a specified `rrule` recurring SLO correction (required if specifying `rrule`)", + "description_kind": "plain", + "optional": true + }, + "end": { + "type": "number", + "description": "Ending time of the correction in epoch seconds. Required for one time corrections, but optional if `rrule` is specified", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rrule": { + "type": "string", + "description": "Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, `COUNT` and `UNTIL`.", + "description_kind": "plain", + "optional": true + }, + "slo_id": { + "type": "string", + "description": "ID of the SLO that this correction will be applied to.", + "description_kind": "plain", + "required": true + }, + "start": { + "type": "number", + "description": "Starting time of the correction in epoch seconds.", + "description_kind": "plain", + "required": true + }, + "timezone": { + "type": "string", + "description": "The timezone to display in the UI for the correction times (defaults to \"UTC\")", + "description_kind": "plain", + "optional": true + } + }, + "description": "Resource for interacting with the slo_correction API.", + "description_kind": "plain" + } + }, + "datadog_spans_metric": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the span-based metric. This field can't be updated after creation.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "compute": { + "nesting_mode": "single", + "block": { + "attributes": { + "aggregation_type": { + "type": "string", + "description": "The type of aggregation to use. This field can't be updated after creation.", + "description_kind": "plain", + "required": true + }, + "include_percentiles": { + "type": "bool", + "description": "Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the `aggregation_type` is `distribution`.", + "description_kind": "plain", + "optional": true + }, + "path": { + "type": "string", + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\"). This field can't be updated after creation.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "filter": { + "nesting_mode": "single", + "block": { + "attributes": { + "query": { + "type": "string", + "description": "The search query - following the span search syntax. Defaults to `\"*\"`.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "group_by": { + "nesting_mode": "set", + "block": { + "attributes": { + "path": { + "type": "string", + "description": "The path to the value the span-based metric will be aggregated over.", + "description_kind": "plain", + "required": true + }, + "tag_name": { + "type": "string", + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description": "Provides a Datadog SpansMetric resource. This can be used to create and manage Datadog spans_metric.", + "description_kind": "plain" + } + }, + "datadog_synthetics_concurrency_cap": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "on_demand_concurrency_cap": { + "type": "number", + "description": "Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog Synthetics On Demand Concurrency Cap API resource. This can be used to manage the Concurrency Cap for Synthetic tests.", + "description_kind": "plain" + } + }, + "datadog_synthetics_global_variable": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Description of the global variable.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Synthetics global variable name.", + "description_kind": "plain", + "required": true + }, + "parse_test_id": { + "type": "string", + "description": "Id of the Synthetics test to use for a variable from test.", + "description_kind": "plain", + "optional": true + }, + "restricted_roles": { + "type": [ + "set", + "string" + ], + "description": "A list of role identifiers to associate with the Synthetics global variable.", + "description_kind": "plain", + "optional": true + }, + "secure": { + "type": "bool", + "description": "If set to true, the value of the global variable is hidden. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to associate with your synthetics global variable.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "The value of the global variable.", + "description_kind": "plain", + "required": true, + "sensitive": true + } + }, + "block_types": { + "options": { + "nesting_mode": "list", + "block": { + "block_types": { + "totp_parameters": { + "nesting_mode": "list", + "block": { + "attributes": { + "digits": { + "type": "number", + "description": "Number of digits for the OTP.", + "description_kind": "plain", + "required": true + }, + "refresh_interval": { + "type": "number", + "description": "Interval for which to refresh the token (in seconds).", + "description_kind": "plain", + "required": true + } + }, + "description": "Parameters needed for MFA/TOTP.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Additional options for the variable, such as a MFA token.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "parse_test_options": { + "nesting_mode": "list", + "block": { + "attributes": { + "field": { + "type": "string", + "description": "Required when type = `http_header`. Defines the header to use to extract the value", + "description_kind": "plain", + "optional": true + }, + "local_variable_name": { + "type": "string", + "description": "When type is `local_variable`, name of the local variable to use to extract the value.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `local_variable`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Type of parser to extract the value. Valid values are `raw`, `json_path`, `regex`, `x_path`.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "Value for the parser to use, required for type `json_path` or `regex`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "ID of the Synthetics test to use a source of the global variable value.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog synthetics global variable resource. This can be used to create and manage Datadog synthetics global variables.", + "description_kind": "plain" + } + }, + "datadog_synthetics_private_location": { + "version": 0, + "block": { + "attributes": { + "config": { + "type": "string", + "description": "Configuration skeleton for the private location. See installation instructions of the private location on how to use this configuration.", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "description": { + "type": "string", + "description": "Description of the private location.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Synthetics private location name.", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to associate with your synthetics private location.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "metadata": { + "nesting_mode": "list", + "block": { + "attributes": { + "restricted_roles": { + "type": [ + "set", + "string" + ], + "description": "A list of role identifiers pulled from the Roles API to restrict read and write access.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The private location metadata", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog synthetics private location resource. This can be used to create and manage Datadog synthetics private locations.", + "description_kind": "plain" + } + }, + "datadog_synthetics_test": { + "version": 0, + "block": { + "attributes": { + "device_ids": { + "type": [ + "list", + "string" + ], + "description": "Required if `type = \"browser\"`. Array with the different device IDs used to run the test. Valid values are `laptop_large`, `tablet`, `mobile_small`, `chrome.laptop_large`, `chrome.tablet`, `chrome.mobile_small`, `firefox.laptop_large`, `firefox.tablet`, `firefox.mobile_small`, `edge.laptop_large`, `edge.tablet`, `edge.mobile_small`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "locations": { + "type": [ + "set", + "string" + ], + "description": "Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations.", + "description_kind": "plain", + "required": true + }, + "message": { + "type": "string", + "description": "A message to include with notifications for this synthetics test. Email notifications can be sent to specific users by using the same `@username` notation as events. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "monitor_id": { + "type": "number", + "description": "ID of the monitor associated with the Datadog synthetics test.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "Name of Datadog synthetics test.", + "description_kind": "plain", + "required": true + }, + "request_headers": { + "type": [ + "map", + "string" + ], + "description": "Header name and value map.", + "description_kind": "plain", + "optional": true + }, + "request_metadata": { + "type": [ + "map", + "string" + ], + "description": "Metadata to include when performing the gRPC test.", + "description_kind": "plain", + "optional": true + }, + "request_query": { + "type": [ + "map", + "string" + ], + "description": "Query arguments name and value map.", + "description_kind": "plain", + "optional": true + }, + "set_cookie": { + "type": "string", + "description": "Cookies to be used for a browser test request, using the [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) syntax.", + "description_kind": "plain", + "optional": true + }, + "status": { + "type": "string", + "description": "Define whether you want to start (`live`) or pause (`paused`) a Synthetic test. Valid values are `live`, `paused`.", + "description_kind": "plain", + "required": true + }, + "subtype": { + "type": "string", + "description": "The subtype of the Synthetic API test. Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, `multi`, `icmp`, `udp`, `websocket`, `grpc`.", + "description_kind": "plain", + "optional": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to associate with your synthetics test. This can help you categorize and filter tests in the manage synthetics page of the UI. Default is an empty list (`[]`).", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Synthetics test type. Valid values are `api`, `browser`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "api_step": { + "nesting_mode": "list", + "block": { + "attributes": { + "allow_failure": { + "type": "bool", + "description": "Determines whether or not to continue with test if this step fails.", + "description_kind": "plain", + "optional": true + }, + "is_critical": { + "type": "bool", + "description": "Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "The name of the step.", + "description_kind": "plain", + "required": true + }, + "request_headers": { + "type": [ + "map", + "string" + ], + "description": "Header name and value map.", + "description_kind": "plain", + "optional": true + }, + "request_query": { + "type": [ + "map", + "string" + ], + "description": "Query arguments name and value map.", + "description_kind": "plain", + "optional": true + }, + "subtype": { + "type": "string", + "description": "The subtype of the Synthetic multistep API test step. Valid values are `http`. Defaults to `\"http\"`.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "assertion": { + "nesting_mode": "list", + "block": { + "attributes": { + "operator": { + "type": "string", + "description": "Assertion operator. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)).", + "description_kind": "plain", + "required": true + }, + "property": { + "type": "string", + "description": "If assertion type is `header`, this is the header name.", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details.", + "description_kind": "plain", + "optional": true + }, + "timings_scope": { + "type": "string", + "description": "Timings scope for response time assertions. Valid values are `all`, `withoutDNS`.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of assertion. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)). Valid values are `body`, `header`, `statusCode`, `certificate`, `responseTime`, `property`, `recordEvery`, `recordSome`, `tlsVersion`, `minTlsVersion`, `latency`, `packetLossPercentage`, `packetsReceived`, `networkHop`, `receivedMessage`, `grpcHealthcheckStatus`, `grpcMetadata`, `grpcProto`, `connection`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "targetjsonpath": { + "nesting_mode": "list", + "block": { + "attributes": { + "jsonpath": { + "type": "string", + "description": "The JSON path to assert.", + "description_kind": "plain", + "required": true + }, + "operator": { + "type": "string", + "description": "The specific operator to use on the path.", + "description_kind": "plain", + "required": true + }, + "targetvalue": { + "type": "string", + "description": "Expected matching value.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "targetxpath": { + "nesting_mode": "list", + "block": { + "attributes": { + "operator": { + "type": "string", + "description": "The specific operator to use on the path.", + "description_kind": "plain", + "required": true + }, + "targetvalue": { + "type": "string", + "description": "Expected matching value.", + "description_kind": "plain", + "optional": true + }, + "xpath": { + "type": "string", + "description": "The xpath to assert.", + "description_kind": "plain", + "required": true + } + }, + "description": "Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "extracted_value": { + "nesting_mode": "list", + "block": { + "attributes": { + "field": { + "type": "string", + "description": "When type is `http_header`, name of the header to use to extract the value.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "secure": { + "type": "bool", + "description": "Determines whether or not the extracted value will be obfuscated.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Property of the Synthetics Test Response to use for the variable. Valid values are `http_body`, `http_header`, `local_variable`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "parser": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "Regex or JSON path used for the parser. Not used with type `raw`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Values to parse and save as variables from the response.", + "description_kind": "plain" + } + }, + "request_basicauth": { + "nesting_mode": "list", + "block": { + "attributes": { + "access_key": { + "type": "string", + "description": "Access key for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "access_token_url": { + "type": "string", + "description": "Access token url for `oauth-client` or `oauth-rop` authentication.", + "description_kind": "plain", + "optional": true + }, + "audience": { + "type": "string", + "description": "Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "client_id": { + "type": "string", + "description": "Client ID for `oauth-client` or `oauth-rop` authentication.", + "description_kind": "plain", + "optional": true + }, + "client_secret": { + "type": "string", + "description": "Client secret for `oauth-client` or `oauth-rop` authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "domain": { + "type": "string", + "description": "Domain for `ntlm` authentication.", + "description_kind": "plain", + "optional": true + }, + "password": { + "type": "string", + "description": "Password for authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "region": { + "type": "string", + "description": "Region for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true + }, + "resource": { + "type": "string", + "description": "Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": "string", + "description": "Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "secret_key": { + "type": "string", + "description": "Secret key for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "service_name": { + "type": "string", + "description": "Service name for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true + }, + "session_token": { + "type": "string", + "description": "Session token for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true + }, + "token_api_authentication": { + "type": "string", + "description": "Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of basic authentication to use when performing the test. Defaults to `\"web\"`.", + "description_kind": "plain", + "optional": true + }, + "username": { + "type": "string", + "description": "Username for authentication.", + "description_kind": "plain", + "optional": true + }, + "workstation": { + "type": "string", + "description": "Workstation for `ntlm` authentication.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request_client_certificate": { + "nesting_mode": "list", + "block": { + "block_types": { + "cert": { + "nesting_mode": "list", + "block": { + "attributes": { + "content": { + "type": "string", + "description": "Content of the certificate.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "filename": { + "type": "string", + "description": "File name for the certificate. Defaults to `\"Provided in Terraform config\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "key": { + "nesting_mode": "list", + "block": { + "attributes": { + "content": { + "type": "string", + "description": "Content of the certificate.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "filename": { + "type": "string", + "description": "File name for the certificate. Defaults to `\"Provided in Terraform config\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "allow_insecure": { + "type": "bool", + "description": "Allows loading insecure content for an HTTP request in an API test or in a multistep API test step.", + "description_kind": "plain", + "optional": true + }, + "body": { + "type": "string", + "description": "The request body.", + "description_kind": "plain", + "optional": true + }, + "body_type": { + "type": "string", + "description": "Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`.", + "description_kind": "plain", + "optional": true + }, + "call_type": { + "type": "string", + "description": "The type of gRPC call to perform. Valid values are `healthcheck`, `unary`.", + "description_kind": "plain", + "optional": true + }, + "certificate_domains": { + "type": [ + "list", + "string" + ], + "description": "By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in `certificate_domains`.", + "description_kind": "plain", + "optional": true + }, + "dns_server": { + "type": "string", + "description": "DNS server to use for DNS tests (`subtype = \"dns\"`).", + "description_kind": "plain", + "optional": true + }, + "dns_server_port": { + "type": "number", + "description": "DNS server port to use for DNS tests.", + "description_kind": "plain", + "optional": true + }, + "follow_redirects": { + "type": "bool", + "description": "Determines whether or not the API HTTP test should follow redirects.", + "description_kind": "plain", + "optional": true + }, + "host": { + "type": "string", + "description": "Host name to perform the test with.", + "description_kind": "plain", + "optional": true + }, + "message": { + "type": "string", + "description": "For UDP and websocket tests, message to send with the request.", + "description_kind": "plain", + "optional": true + }, + "method": { + "type": "string", + "description": "Either the HTTP method/verb to use or a gRPC method available on the service set in the `service` field. Required if `subtype` is `HTTP` or if `subtype` is `grpc` and `callType` is `unary`.", + "description_kind": "plain", + "optional": true + }, + "no_saving_response_body": { + "type": "bool", + "description": "Determines whether or not to save the response body.", + "description_kind": "plain", + "optional": true + }, + "number_of_packets": { + "type": "number", + "description": "Number of pings to use per test for ICMP tests (`subtype = \"icmp\"`) between 0 and 10.", + "description_kind": "plain", + "optional": true + }, + "persist_cookies": { + "type": "bool", + "description": "Persist cookies across redirects.", + "description_kind": "plain", + "optional": true + }, + "port": { + "type": "number", + "description": "Port to use when performing the test.", + "description_kind": "plain", + "optional": true + }, + "proto_json_descriptor": { + "type": "string", + "description": "A protobuf JSON descriptor.", + "description_kind": "plain", + "optional": true + }, + "servername": { + "type": "string", + "description": "For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "The gRPC service on which you want to perform the gRPC call.", + "description_kind": "plain", + "optional": true + }, + "should_track_hops": { + "type": "bool", + "description": "This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = \"icmp\"`).", + "description_kind": "plain", + "optional": true + }, + "timeout": { + "type": "number", + "description": "Timeout in seconds for the test. Defaults to `60`.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "The URL to send the request to.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The request for the api step.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request_proxy": { + "nesting_mode": "list", + "block": { + "attributes": { + "headers": { + "type": [ + "map", + "string" + ], + "description": "Header name and value map.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "URL of the proxy to perform the test.", + "description_kind": "plain", + "required": true + } + }, + "description": "The proxy to perform the test.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "retry": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Interval between a failed test and the next retry in milliseconds. Defaults to `300`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Steps for multistep api tests", + "description_kind": "plain" + } + }, + "assertion": { + "nesting_mode": "list", + "block": { + "attributes": { + "operator": { + "type": "string", + "description": "Assertion operator. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)).", + "description_kind": "plain", + "required": true + }, + "property": { + "type": "string", + "description": "If assertion type is `header`, this is the header name.", + "description_kind": "plain", + "optional": true + }, + "target": { + "type": "string", + "description": "Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details.", + "description_kind": "plain", + "optional": true + }, + "timings_scope": { + "type": "string", + "description": "Timings scope for response time assertions. Valid values are `all`, `withoutDNS`.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of assertion. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)). Valid values are `body`, `header`, `statusCode`, `certificate`, `responseTime`, `property`, `recordEvery`, `recordSome`, `tlsVersion`, `minTlsVersion`, `latency`, `packetLossPercentage`, `packetsReceived`, `networkHop`, `receivedMessage`, `grpcHealthcheckStatus`, `grpcMetadata`, `grpcProto`, `connection`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "targetjsonpath": { + "nesting_mode": "list", + "block": { + "attributes": { + "jsonpath": { + "type": "string", + "description": "The JSON path to assert.", + "description_kind": "plain", + "required": true + }, + "operator": { + "type": "string", + "description": "The specific operator to use on the path.", + "description_kind": "plain", + "required": true + }, + "targetvalue": { + "type": "string", + "description": "Expected matching value.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "targetxpath": { + "nesting_mode": "list", + "block": { + "attributes": { + "operator": { + "type": "string", + "description": "The specific operator to use on the path.", + "description_kind": "plain", + "required": true + }, + "targetvalue": { + "type": "string", + "description": "Expected matching value.", + "description_kind": "plain", + "optional": true + }, + "xpath": { + "type": "string", + "description": "The xpath to assert.", + "description_kind": "plain", + "required": true + } + }, + "description": "Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "browser_step": { + "nesting_mode": "list", + "block": { + "attributes": { + "allow_failure": { + "type": "bool", + "description": "Determines if the step should be allowed to fail.", + "description_kind": "plain", + "optional": true + }, + "force_element_update": { + "type": "bool", + "description": "Force update of the \"element\" parameter for the step", + "description_kind": "plain", + "optional": true + }, + "is_critical": { + "type": "bool", + "description": "Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the step.", + "description_kind": "plain", + "required": true + }, + "no_screenshot": { + "type": "bool", + "description": "Prevents saving screenshots of the step.", + "description_kind": "plain", + "optional": true + }, + "timeout": { + "type": "number", + "description": "Used to override the default timeout of a step.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "params": { + "nesting_mode": "list", + "block": { + "attributes": { + "attribute": { + "type": "string", + "description": "Name of the attribute to use for an \"assert attribute\" step.", + "description_kind": "plain", + "optional": true + }, + "check": { + "type": "string", + "description": "Check type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`.", + "description_kind": "plain", + "optional": true + }, + "click_type": { + "type": "string", + "description": "Type of click to use for a \"click\" step.", + "description_kind": "plain", + "optional": true + }, + "code": { + "type": "string", + "description": "Javascript code to use for the step.", + "description_kind": "plain", + "optional": true + }, + "delay": { + "type": "number", + "description": "Delay between each key stroke for a \"type test\" step.", + "description_kind": "plain", + "optional": true + }, + "element": { + "type": "string", + "description": "Element to use for the step, json encoded string.", + "description_kind": "plain", + "optional": true + }, + "email": { + "type": "string", + "description": "Details of the email for an \"assert email\" step.", + "description_kind": "plain", + "optional": true + }, + "file": { + "type": "string", + "description": "JSON encoded string used for an \"assert download\" step. Refer to the examples for a usage example showing the schema.", + "description_kind": "plain", + "optional": true + }, + "files": { + "type": "string", + "description": "Details of the files for an \"upload files\" step, json encoded string.", + "description_kind": "plain", + "optional": true + }, + "modifiers": { + "type": [ + "list", + "string" + ], + "description": "Modifier to use for a \"press key\" step.", + "description_kind": "plain", + "optional": true + }, + "playing_tab_id": { + "type": "string", + "description": "ID of the tab to play the subtest.", + "description_kind": "plain", + "optional": true + }, + "request": { + "type": "string", + "description": "Request for an API step.", + "description_kind": "plain", + "optional": true + }, + "subtest_public_id": { + "type": "string", + "description": "ID of the Synthetics test to use as subtest.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description": "Value of the step.", + "description_kind": "plain", + "optional": true + }, + "with_click": { + "type": "bool", + "description": "For \"file upload\" steps.", + "description_kind": "plain", + "optional": true + }, + "x": { + "type": "number", + "description": "X coordinates for a \"scroll step\".", + "description_kind": "plain", + "optional": true + }, + "y": { + "type": "number", + "description": "Y coordinates for a \"scroll step\".", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "element_user_locator": { + "nesting_mode": "list", + "block": { + "attributes": { + "fail_test_on_cannot_locate": { + "type": "bool", + "description": "Defaults to `false`.", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "value": { + "nesting_mode": "list", + "block": { + "attributes": { + "type": { + "type": "string", + "description": "Defaults to `\"css\"`.", + "description_kind": "plain", + "optional": true + }, + "value": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Custom user selector to use for the step.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "variable": { + "nesting_mode": "list", + "block": { + "attributes": { + "example": { + "type": "string", + "description": "Example of the extracted variable. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the extracted variable.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Details of the variable to extract.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Parameters for the step.", + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Steps for browser tests.", + "description_kind": "plain" + } + }, + "browser_variable": { + "nesting_mode": "list", + "block": { + "attributes": { + "example": { + "type": "string", + "description": "Example for the variable. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description": "ID of the global variable to use. This is actually only used (and required) in the case of using a variable of type `global`.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the variable.", + "description_kind": "plain", + "required": true + }, + "pattern": { + "type": "string", + "description": "Pattern of the variable. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "secure": { + "type": "bool", + "description": "Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text`", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of browser test variable. Valid values are `element`, `email`, `global`, `javascript`, `text`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "config_variable": { + "nesting_mode": "list", + "block": { + "attributes": { + "example": { + "type": "string", + "description": "Example for the variable. This value is not returned by the api when `secure = true`. Avoid drift by only making updates to this value from within Terraform.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description": "When type = `global`, ID of the global variable to use.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the variable.", + "description_kind": "plain", + "required": true + }, + "pattern": { + "type": "string", + "description": "Pattern of the variable. This value is not returned by the api when `secure = true`. Avoid drift by only making updates to this value from within Terraform.", + "description_kind": "plain", + "optional": true + }, + "secure": { + "type": "bool", + "description": "Whether the value of this variable will be obfuscated in test results. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of test configuration variable. Valid values are `global`, `text`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below.", + "description_kind": "plain" + } + }, + "options_list": { + "nesting_mode": "list", + "block": { + "attributes": { + "accept_self_signed": { + "type": "bool", + "description": "For SSL test, whether or not the test should allow self signed certificates.", + "description_kind": "plain", + "optional": true + }, + "allow_insecure": { + "type": "bool", + "description": "Allows loading insecure content for an HTTP request in an API test or in a multistep API test step.", + "description_kind": "plain", + "optional": true + }, + "check_certificate_revocation": { + "type": "bool", + "description": "For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP.", + "description_kind": "plain", + "optional": true + }, + "disable_cors": { + "type": "bool", + "description": "Disable Cross-Origin Resource Sharing for browser tests.", + "description_kind": "plain", + "optional": true + }, + "disable_csp": { + "type": "bool", + "description": "Disable Content Security Policy for browser tests.", + "description_kind": "plain", + "optional": true + }, + "follow_redirects": { + "type": "bool", + "description": "Determines whether or not the API HTTP test should follow redirects.", + "description_kind": "plain", + "optional": true + }, + "http_version": { + "type": "string", + "description": "HTTP version to use for a Synthetics API test. Valid values are `http1`, `http2`, `any`.", + "description_kind": "plain", + "optional": true + }, + "ignore_server_certificate_error": { + "type": "bool", + "description": "Ignore server certificate error for browser tests.", + "description_kind": "plain", + "optional": true + }, + "initial_navigation_timeout": { + "type": "number", + "description": "Timeout before declaring the initial step as failed (in seconds) for browser tests.", + "description_kind": "plain", + "optional": true + }, + "min_failure_duration": { + "type": "number", + "description": "Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`.", + "description_kind": "plain", + "optional": true + }, + "min_location_failed": { + "type": "number", + "description": "Minimum number of locations in failure required to trigger an alert. Defaults to `1`.", + "description_kind": "plain", + "optional": true + }, + "monitor_name": { + "type": "string", + "description": "The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs.", + "description_kind": "plain", + "optional": true + }, + "monitor_priority": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "no_screenshot": { + "type": "bool", + "description": "Prevents saving screenshots of the steps.", + "description_kind": "plain", + "optional": true + }, + "restricted_roles": { + "type": [ + "set", + "string" + ], + "description": "A list of role identifiers pulled from the Roles API to restrict read and write access.", + "description_kind": "plain", + "optional": true + }, + "tick_every": { + "type": "number", + "description": "How often the test should run (in seconds).", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "ci": { + "nesting_mode": "list", + "block": { + "attributes": { + "execution_rule": { + "type": "string", + "description": "Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`.", + "description_kind": "plain", + "optional": true + } + }, + "description": "CI/CD options for a Synthetic test.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "monitor_options": { + "nesting_mode": "list", + "block": { + "attributes": { + "renotify_interval": { + "type": "number", + "description": "Specify a renotification frequency in minutes. Values available by default are `0`, `10`, `20`, `30`, `40`, `50`, `60`, `90`, `120`, `180`, `240`, `300`, `360`, `720`, `1440`. Defaults to `0`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "retry": { + "nesting_mode": "list", + "block": { + "attributes": { + "count": { + "type": "number", + "description": "Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`.", + "description_kind": "plain", + "optional": true + }, + "interval": { + "type": "number", + "description": "Interval between a failed test and the next retry in milliseconds. Defaults to `300`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "rum_settings": { + "nesting_mode": "list", + "block": { + "attributes": { + "application_id": { + "type": "string", + "description": "RUM application ID used to collect RUM data for the browser test.", + "description_kind": "plain", + "optional": true + }, + "client_token_id": { + "type": "number", + "description": "RUM application API key ID used to collect RUM data for the browser test.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "is_enabled": { + "type": "bool", + "description": "Determines whether RUM data is collected during test runs.", + "description_kind": "plain", + "required": true + } + }, + "description": "The RUM data collection settings for the Synthetic browser test.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "scheduling": { + "nesting_mode": "list", + "block": { + "attributes": { + "timezone": { + "type": "string", + "description": "Timezone in which the timeframe is based.", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "timeframes": { + "nesting_mode": "set", + "block": { + "attributes": { + "day": { + "type": "number", + "description": "Number representing the day of the week", + "description_kind": "plain", + "required": true + }, + "from": { + "type": "string", + "description": "The hour of the day on which scheduling starts.", + "description_kind": "plain", + "required": true + }, + "to": { + "type": "string", + "description": "The hour of the day on which scheduling ends.", + "description_kind": "plain", + "required": true + } + }, + "description": "Array containing objects describing the scheduling pattern to apply to each day.", + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description": "Object containing timeframes and timezone used for advanced scheduling.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "request_basicauth": { + "nesting_mode": "list", + "block": { + "attributes": { + "access_key": { + "type": "string", + "description": "Access key for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "access_token_url": { + "type": "string", + "description": "Access token url for `oauth-client` or `oauth-rop` authentication.", + "description_kind": "plain", + "optional": true + }, + "audience": { + "type": "string", + "description": "Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "client_id": { + "type": "string", + "description": "Client ID for `oauth-client` or `oauth-rop` authentication.", + "description_kind": "plain", + "optional": true + }, + "client_secret": { + "type": "string", + "description": "Client secret for `oauth-client` or `oauth-rop` authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "domain": { + "type": "string", + "description": "Domain for `ntlm` authentication.", + "description_kind": "plain", + "optional": true + }, + "password": { + "type": "string", + "description": "Password for authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "region": { + "type": "string", + "description": "Region for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true + }, + "resource": { + "type": "string", + "description": "Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": "string", + "description": "Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.", + "description_kind": "plain", + "optional": true + }, + "secret_key": { + "type": "string", + "description": "Secret key for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true, + "sensitive": true + }, + "service_name": { + "type": "string", + "description": "Service name for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true + }, + "session_token": { + "type": "string", + "description": "Session token for `SIGV4` authentication.", + "description_kind": "plain", + "optional": true + }, + "token_api_authentication": { + "type": "string", + "description": "Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of basic authentication to use when performing the test. Defaults to `\"web\"`.", + "description_kind": "plain", + "optional": true + }, + "username": { + "type": "string", + "description": "Username for authentication.", + "description_kind": "plain", + "optional": true + }, + "workstation": { + "type": "string", + "description": "Workstation for `ntlm` authentication.", + "description_kind": "plain", + "optional": true + } + }, + "description": "The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request_client_certificate": { + "nesting_mode": "list", + "block": { + "block_types": { + "cert": { + "nesting_mode": "list", + "block": { + "attributes": { + "content": { + "type": "string", + "description": "Content of the certificate.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "filename": { + "type": "string", + "description": "File name for the certificate. Defaults to `\"Provided in Terraform config\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + }, + "key": { + "nesting_mode": "list", + "block": { + "attributes": { + "content": { + "type": "string", + "description": "Content of the certificate.", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "filename": { + "type": "string", + "description": "File name for the certificate. Defaults to `\"Provided in Terraform config\"`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1, + "max_items": 1 + } + }, + "description": "Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request_definition": { + "nesting_mode": "list", + "block": { + "attributes": { + "body": { + "type": "string", + "description": "The request body.", + "description_kind": "plain", + "optional": true + }, + "body_type": { + "type": "string", + "description": "Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`.", + "description_kind": "plain", + "optional": true + }, + "call_type": { + "type": "string", + "description": "The type of gRPC call to perform. Valid values are `healthcheck`, `unary`.", + "description_kind": "plain", + "optional": true + }, + "certificate_domains": { + "type": [ + "list", + "string" + ], + "description": "By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in `certificate_domains`.", + "description_kind": "plain", + "optional": true + }, + "dns_server": { + "type": "string", + "description": "DNS server to use for DNS tests (`subtype = \"dns\"`).", + "description_kind": "plain", + "optional": true + }, + "dns_server_port": { + "type": "number", + "description": "DNS server port to use for DNS tests.", + "description_kind": "plain", + "optional": true + }, + "host": { + "type": "string", + "description": "Host name to perform the test with.", + "description_kind": "plain", + "optional": true + }, + "message": { + "type": "string", + "description": "For UDP and websocket tests, message to send with the request.", + "description_kind": "plain", + "optional": true + }, + "method": { + "type": "string", + "description": "Either the HTTP method/verb to use or a gRPC method available on the service set in the `service` field. Required if `subtype` is `HTTP` or if `subtype` is `grpc` and `callType` is `unary`.", + "description_kind": "plain", + "optional": true + }, + "no_saving_response_body": { + "type": "bool", + "description": "Determines whether or not to save the response body.", + "description_kind": "plain", + "optional": true + }, + "number_of_packets": { + "type": "number", + "description": "Number of pings to use per test for ICMP tests (`subtype = \"icmp\"`) between 0 and 10.", + "description_kind": "plain", + "optional": true + }, + "persist_cookies": { + "type": "bool", + "description": "Persist cookies across redirects.", + "description_kind": "plain", + "optional": true + }, + "port": { + "type": "number", + "description": "Port to use when performing the test.", + "description_kind": "plain", + "optional": true + }, + "proto_json_descriptor": { + "type": "string", + "description": "A protobuf JSON descriptor.", + "description_kind": "plain", + "optional": true + }, + "servername": { + "type": "string", + "description": "For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number.", + "description_kind": "plain", + "optional": true + }, + "service": { + "type": "string", + "description": "The gRPC service on which you want to perform the gRPC call.", + "description_kind": "plain", + "optional": true + }, + "should_track_hops": { + "type": "bool", + "description": "This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = \"icmp\"`).", + "description_kind": "plain", + "optional": true + }, + "timeout": { + "type": "number", + "description": "Timeout in seconds for the test. Defaults to `60`.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "The URL to send the request to.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Required if `type = \"api\"`. The synthetics test request.", + "description_kind": "plain" + }, + "max_items": 1 + }, + "request_proxy": { + "nesting_mode": "list", + "block": { + "attributes": { + "headers": { + "type": [ + "map", + "string" + ], + "description": "Header name and value map.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "URL of the proxy to perform the test.", + "description_kind": "plain", + "required": true + } + }, + "description": "The proxy to perform the test.", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description": "Provides a Datadog synthetics test resource. This can be used to create and manage Datadog synthetics test.", + "description_kind": "plain" + } + }, + "datadog_team": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Free-form markdown description/content for the team's homepage.", + "description_kind": "plain", + "required": true + }, + "handle": { + "type": "string", + "description": "The team's identifier", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "link_count": { + "type": "number", + "description": "The number of links belonging to the team.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the team.", + "description_kind": "plain", + "required": true + }, + "summary": { + "type": "string", + "description": "A brief summary of the team, derived from the `description`.", + "description_kind": "plain", + "computed": true + }, + "user_count": { + "type": "number", + "description": "The number of users belonging to the team.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog Team resource. This can be used to create and manage Datadog team.", + "description_kind": "plain" + } + }, + "datadog_team_link": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "label": { + "type": "string", + "description": "The link's label.", + "description_kind": "plain", + "required": true + }, + "position": { + "type": "number", + "description": "The link's position, used to sort links for the team.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "team_id": { + "type": "string", + "description": "ID of the team the link is associated with.", + "description_kind": "plain", + "required": true + }, + "url": { + "type": "string", + "description": "The URL for the link.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog TeamLink resource. This can be used to create and manage Datadog team_link.", + "description_kind": "plain" + } + }, + "datadog_team_membership": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "role": { + "type": "string", + "description": "The user's role within the team. Valid values are `admin`.", + "description_kind": "plain", + "optional": true + }, + "team_id": { + "type": "string", + "description": "ID of the team the team membership is associated with.", + "description_kind": "plain", + "required": true + }, + "user_id": { + "type": "string", + "description": "The ID of the user.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog TeamMembership resource. This can be used to create and manage Datadog team_membership.", + "description_kind": "plain" + } + }, + "datadog_team_permission_setting": { + "version": 0, + "block": { + "attributes": { + "action": { + "type": "string", + "description": "The identifier for the action. Valid values are `manage_membership`, `edit`.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "team_id": { + "type": "string", + "description": "ID of the team the team permission setting is associated with.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "The action value. Valid values are `admins`, `members`, `organization`, `user_access_manage`, `teams_manage`.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog TeamPermissionSetting resource. This can be used to manage Datadog team_permission_setting.", + "description_kind": "plain" + } + }, + "datadog_user": { + "version": 0, + "block": { + "attributes": { + "disabled": { + "type": "bool", + "description": "Whether the user is disabled. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "email": { + "type": "string", + "description": "Email address for user.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name for user.", + "description_kind": "plain", + "optional": true + }, + "roles": { + "type": [ + "set", + "string" + ], + "description": "A list a role IDs to assign to the user.", + "description_kind": "plain", + "optional": true + }, + "send_user_invitation": { + "type": "bool", + "description": "Whether an invitation email should be sent when the user is created. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "user_invitation_id": { + "type": "string", + "description": "The ID of the user invitation that was sent when creating the user.", + "description_kind": "plain", + "computed": true + }, + "verified": { + "type": "bool", + "description": "Returns `true` if the user is verified.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog user resource. This can be used to create and manage Datadog users.", + "description_kind": "plain" + } + }, + "datadog_webhook": { + "version": 0, + "block": { + "attributes": { + "custom_headers": { + "type": "string", + "description": "The headers attached to the webhook.", + "description_kind": "plain", + "optional": true + }, + "encode_as": { + "type": "string", + "description": "Encoding type. Valid values are `json`, `form`.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the webhook. It corresponds with `\u003cWEBHOOK_NAME\u003e`.", + "description_kind": "plain", + "required": true + }, + "payload": { + "type": "string", + "description": "The payload of the webhook.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "url": { + "type": "string", + "description": "The URL of the webhook.", + "description_kind": "plain", + "required": true + } + }, + "description": "Provides a Datadog webhook resource. This can be used to create and manage Datadog webhooks.", + "description_kind": "plain" + } + }, + "datadog_webhook_custom_variable": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_secret": { + "type": "bool", + "description": "Whether the custom variable is secret or not.", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the variable. It corresponds with `\u003cCUSTOM_VARIABLE_NAME\u003e`.", + "description_kind": "plain", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the custom variable.", + "description_kind": "plain", + "required": true, + "sensitive": true + } + }, + "description": "Provides a Datadog webhooks custom variable resource. This can be used to create and manage Datadog webhooks custom variables.", + "description_kind": "plain" + } + } + }, + "data_source_schemas": { + "datadog_api_key": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "optional": true + }, + "key": { + "type": "string", + "description": "The value of the API Key.", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "name": { + "type": "string", + "description": "Name for API Key.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Use this data source to retrieve information about an existing api key.", + "description_kind": "plain" + } + }, + "datadog_apm_retention_filters_order": { + "version": 0, + "block": { + "attributes": { + "filter_ids": { + "type": [ + "list", + "string" + ], + "description": "The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog [APM Retention Filters API](https://docs.datadoghq.com/api/v2/apm-retention-filters/) order datasource. This can be used to retrieve APM retention filters order.", + "description_kind": "plain" + } + }, + "datadog_application_key": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "Id for Application Key.", + "description_kind": "plain", + "optional": true + }, + "key": { + "type": "string", + "description": "The value of the Application Key.", + "description_kind": "plain", + "computed": true, + "sensitive": true + }, + "name": { + "type": "string", + "description": "Name for Application Key.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Use this data source to retrieve information about an existing application key.", + "description_kind": "plain" + } + }, + "datadog_cloud_workload_security_agent_rules": { + "version": 0, + "block": { + "attributes": { + "agent_rules": { + "type": [ + "list", + [ + "object", + { + "description": "string", + "enabled": "bool", + "expression": "string", + "id": "string", + "name": "string" + } + ] + ], + "description": "List of Agent rules.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Use this data source to retrieve information about existing Cloud Workload Security Agent Rules for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_dashboard": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The dashboard name to search for. Must only match one dashboard.", + "description_kind": "plain", + "required": true + }, + "title": { + "type": "string", + "description": "The name of the dashboard.", + "description_kind": "plain", + "computed": true + }, + "url": { + "type": "string", + "description": "The URL to a specific dashboard.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing dashboard, for use in other resources. In particular, it can be used in a monitor message to link to a specific dashboard.", + "description_kind": "plain" + } + }, + "datadog_dashboard_list": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "A dashboard list name to limit the search.", + "description_kind": "plain", + "required": true + } + }, + "description": "Use this data source to retrieve information about an existing dashboard list, for use in other resources. In particular, it can be used in a dashboard to register it in the list.", + "description_kind": "plain" + } + }, + "datadog_hosts": { + "version": 0, + "block": { + "attributes": { + "filter": { + "type": "string", + "description": "String to filter search results.", + "description_kind": "plain", + "optional": true + }, + "from": { + "type": "number", + "description": "Number of seconds since UNIX epoch from which you want to search your hosts.", + "description_kind": "plain", + "optional": true + }, + "host_list": { + "type": [ + "list", + [ + "object", + { + "aliases": [ + "list", + "string" + ], + "apps": [ + "list", + "string" + ], + "aws_name": "string", + "host_name": "string", + "id": "number", + "is_muted": "bool", + "last_reported_time": "number", + "meta": [ + "object", + { + "agent_version": "string", + "cpu_cores": "number", + "gohai": "string", + "machine": "string", + "platform": "string", + "processor": "string", + "python_version": "string", + "socket_fqdn": "string", + "socket_hostname": "string" + } + ], + "metrics": [ + "object", + { + "cpu": "number", + "iowait": "number", + "load": "number" + } + ], + "mute_timeout": "number", + "name": "string", + "sources": [ + "list", + "string" + ], + "up": "bool" + } + ] + ], + "description": "List of hosts (1000 Max).", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "include_muted_hosts_data": { + "type": "bool", + "description": "Include information on the muted status of hosts and when the mute expires.", + "description_kind": "plain", + "optional": true + }, + "sort_dir": { + "type": "string", + "description": "Direction of sort.", + "description_kind": "plain", + "optional": true + }, + "sort_field": { + "type": "string", + "description": "Sort hosts by this field.", + "description_kind": "plain", + "optional": true + }, + "total_matching": { + "type": "number", + "description": "Number of host matching the query.", + "description_kind": "plain", + "computed": true + }, + "total_returned": { + "type": "number", + "description": "Number of host returned.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about your live hosts in Datadog.", + "description_kind": "plain" + } + }, + "datadog_integration_aws_logs_services": { + "version": 0, + "block": { + "attributes": { + "aws_logs_services": { + "type": [ + "list", + [ + "object", + { + "id": "string", + "label": "string" + } + ] + ], + "description": "List of AWS log ready services.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Use this data source to retrieve all AWS log ready services.", + "description_kind": "plain" + } + }, + "datadog_integration_aws_namespace_rules": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "namespace_rules": { + "type": [ + "list", + "string" + ], + "description": "The list of available namespace rules for a Datadog-AWS integration.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog AWS Integration Namespace Rules data source. This can be used to retrieve all available namespace rules for a Datadog-AWS integration.", + "description_kind": "plain" + } + }, + "datadog_ip_ranges": { + "version": 0, + "block": { + "attributes": { + "agents_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the Agent endpoint.", + "description_kind": "plain", + "computed": true + }, + "agents_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the Agent endpoint.", + "description_kind": "plain", + "computed": true + }, + "api_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the API endpoint.", + "description_kind": "plain", + "computed": true + }, + "api_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the API endpoint.", + "description_kind": "plain", + "computed": true + }, + "apm_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the APM endpoint.", + "description_kind": "plain", + "computed": true + }, + "apm_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the APM endpoint.", + "description_kind": "plain", + "computed": true + }, + "global_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for all Datadog endpoints.", + "description_kind": "plain", + "computed": true + }, + "global_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for all Datadog endpoints.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "logs_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the Logs endpoint.", + "description_kind": "plain", + "computed": true + }, + "logs_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the Logs endpoint.", + "description_kind": "plain", + "computed": true + }, + "orchestrator_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the Orchestrator endpoint.", + "description_kind": "plain", + "computed": true + }, + "orchestrator_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the Orchestrator endpoint.", + "description_kind": "plain", + "computed": true + }, + "process_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the Process endpoint.", + "description_kind": "plain", + "computed": true + }, + "process_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the Process endpoint.", + "description_kind": "plain", + "computed": true + }, + "synthetics_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the Synthetics endpoint.", + "description_kind": "plain", + "computed": true + }, + "synthetics_ipv4_by_location": { + "type": [ + "map", + "string" + ], + "description": "A map of IPv4 prefixes (string of concatenated IPs, delimited by ',') by location.", + "description_kind": "plain", + "computed": true + }, + "synthetics_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the Synthetics endpoint.", + "description_kind": "plain", + "computed": true + }, + "synthetics_ipv6_by_location": { + "type": [ + "map", + "string" + ], + "description": "A map of IPv6 prefixes (string of concatenated IPs, delimited by ',') by location.", + "description_kind": "plain", + "computed": true + }, + "webhooks_ipv4": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv4 addresses in CIDR format specifying the A records for the Webhooks endpoint.", + "description_kind": "plain", + "computed": true + }, + "webhooks_ipv6": { + "type": [ + "list", + "string" + ], + "description": "An Array of IPv6 addresses in CIDR format specifying the A records for the Webhooks endpoint.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about Datadog's IP addresses.", + "description_kind": "plain" + } + }, + "datadog_logs_archives_order": { + "version": 0, + "block": { + "attributes": { + "archive_ids": { + "type": [ + "list", + "string" + ], + "description": "The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Get the current order of your logs archives.", + "description_kind": "plain" + } + }, + "datadog_logs_indexes": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logs_indexes": { + "type": [ + "list", + [ + "object", + { + "daily_limit": "number", + "exclusion_filter": [ + "list", + [ + "object", + { + "filter": [ + "list", + [ + "object", + { + "query": "string", + "sample_rate": "number" + } + ] + ], + "is_enabled": "bool", + "name": "string" + } + ] + ], + "filter": [ + "list", + [ + "object", + { + "query": "string" + } + ] + ], + "name": "string", + "retention_days": "number" + } + ] + ], + "description": "List of logs indexes", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to list several existing logs indexes for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_logs_indexes_order": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "index_names": { + "type": [ + "list", + "string" + ], + "description": "Array of strings identifying by their name(s) the index(es) of your organization. Logs are tested against the query filter of each index one by one, following the order of the array. Logs are eventually stored in the first matching index.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Get the current order of your log indexes.", + "description_kind": "plain" + } + }, + "datadog_logs_pipelines": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_read_only": { + "type": "string", + "description": "Filter parameter for retrieved pipelines", + "description_kind": "plain", + "optional": true + }, + "logs_pipelines": { + "type": [ + "list", + [ + "object", + { + "filter": [ + "list", + [ + "object", + { + "query": "string" + } + ] + ], + "id": "string", + "is_enabled": "bool", + "is_read_only": "bool", + "name": "string", + "type": "string" + } + ] + ], + "description": "List of logs pipelines", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to list all existing logs pipelines for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_monitor": { + "version": 0, + "block": { + "attributes": { + "enable_logs_sample": { + "type": "bool", + "description": "Whether or not a list of log values which triggered the alert is included. This is only used by log monitors.", + "description_kind": "plain", + "computed": true + }, + "enable_samples": { + "type": "bool", + "description": "Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors.", + "description_kind": "plain", + "computed": true + }, + "escalation_message": { + "type": "string", + "description": "Message included with a re-notification for this monitor.", + "description_kind": "plain", + "computed": true + }, + "evaluation_delay": { + "type": "number", + "description": "Time (in seconds) for which evaluation is delayed. This is only used by metric monitors.", + "description_kind": "plain", + "computed": true + }, + "group_retention_duration": { + "type": "string", + "description": "The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.", + "description_kind": "plain", + "computed": true + }, + "groupby_simple_monitor": { + "type": "bool", + "description": "Whether or not to trigger one alert if any source breaches a threshold.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_tags": { + "type": "bool", + "description": "Whether or not notifications from the monitor automatically inserts its triggering tags into the title.", + "description_kind": "plain", + "computed": true + }, + "locked": { + "type": "bool", + "description": "Whether or not changes to the monitor are restricted to the creator or admins.", + "description_kind": "plain", + "computed": true + }, + "message": { + "type": "string", + "description": "Message included with notifications for this monitor", + "description_kind": "plain", + "computed": true + }, + "monitor_tags_filter": { + "type": [ + "list", + "string" + ], + "description": "A list of monitor tags to limit the search. This filters on the tags set on the monitor itself.", + "description_kind": "plain", + "optional": true + }, + "monitor_threshold_windows": { + "type": [ + "list", + [ + "object", + { + "recovery_window": "string", + "trigger_window": "string" + } + ] + ], + "description": "Mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m`. This is only used by anomaly monitors.", + "description_kind": "plain", + "computed": true + }, + "monitor_thresholds": { + "type": [ + "list", + [ + "object", + { + "critical": "string", + "critical_recovery": "string", + "ok": "string", + "unknown": "string", + "warning": "string", + "warning_recovery": "string" + } + ] + ], + "description": "Alert thresholds of the monitor.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the monitor", + "description_kind": "plain", + "computed": true + }, + "name_filter": { + "type": "string", + "description": "A monitor name to limit the search.", + "description_kind": "plain", + "optional": true + }, + "new_group_delay": { + "type": "number", + "description": "Time (in seconds) to skip evaluations for new groups.", + "description_kind": "plain", + "computed": true + }, + "new_host_delay": { + "type": "number", + "description": "Time (in seconds) allowing a host to boot and applications to fully start before starting the evaluation of monitor results.", + "description_kind": "plain", + "computed": true + }, + "no_data_timeframe": { + "type": "number", + "description": "The number of minutes before the monitor notifies when data stops reporting.", + "description_kind": "plain", + "computed": true + }, + "notification_preset_name": { + "type": "string", + "description": "Toggles the display of additional content sent in the monitor notification. Valid values are: `show_all`, `hide_query`, `hide_handles`, and `hide_all`.", + "description_kind": "plain", + "computed": true + }, + "notify_audit": { + "type": "bool", + "description": "Whether or not tagged users are notified on changes to the monitor.", + "description_kind": "plain", + "computed": true + }, + "notify_by": { + "type": [ + "set", + "string" + ], + "description": "Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert.", + "description_kind": "plain", + "computed": true + }, + "notify_no_data": { + "type": "bool", + "description": "Whether or not this monitor notifies when data stops reporting.", + "description_kind": "plain", + "computed": true + }, + "on_missing_data": { + "type": "string", + "description": "Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`.", + "description_kind": "plain", + "computed": true + }, + "query": { + "type": "string", + "description": "Query of the monitor.", + "description_kind": "plain", + "computed": true + }, + "renotify_interval": { + "type": "number", + "description": "The number of minutes after the last notification before the monitor re-notifies on the current status.", + "description_kind": "plain", + "computed": true + }, + "renotify_occurrences": { + "type": "number", + "description": "The number of re-notification messages that should be sent on the current status.", + "description_kind": "plain", + "computed": true + }, + "renotify_statuses": { + "type": [ + "set", + "string" + ], + "description": "The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`.", + "description_kind": "plain", + "computed": true + }, + "require_full_window": { + "type": "bool", + "description": "Whether or not the monitor needs a full window of data before it is evaluated.", + "description_kind": "plain", + "computed": true + }, + "restricted_roles": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "scheduling_options": { + "type": [ + "list", + [ + "object", + { + "custom_schedule": [ + "list", + [ + "object", + { + "recurrence": [ + "set", + [ + "object", + { + "rrule": "string", + "start": "string", + "timezone": "string" + } + ] + ] + } + ] + ], + "evaluation_window": [ + "list", + [ + "object", + { + "day_starts": "string", + "hour_starts": "number", + "month_starts": "number" + } + ] + ] + } + ] + ], + "description": "Configuration options for scheduling.", + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "set", + "string" + ], + "description": "List of tags associated with the monitor.", + "description_kind": "plain", + "computed": true + }, + "tags_filter": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to limit the search. This filters on the monitor scope.", + "description_kind": "plain", + "optional": true + }, + "timeout_h": { + "type": "number", + "description": "Number of hours of the monitor not reporting data before it automatically resolves from a triggered state.", + "description_kind": "plain", + "computed": true + }, + "type": { + "type": "string", + "description": "Type of the monitor.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing monitor for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_monitor_config_policies": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_config_policies": { + "type": [ + "list", + [ + "object", + { + "id": "string", + "policy_type": "string", + "tag_policy": [ + "list", + [ + "object", + { + "tag_key": "string", + "tag_key_required": "bool", + "valid_tag_values": [ + "list", + "string" + ] + } + ] + ] + } + ] + ], + "description": "List of monitor config policies", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to list existing monitor config policies for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_monitors": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_tags_filter": { + "type": [ + "list", + "string" + ], + "description": "A list of monitor tags to limit the search. This filters on the tags set on the monitor itself.", + "description_kind": "plain", + "optional": true + }, + "monitors": { + "type": [ + "list", + [ + "object", + { + "id": "number", + "name": "string", + "type": "string" + } + ] + ], + "description": "List of monitors", + "description_kind": "plain", + "computed": true + }, + "name_filter": { + "type": "string", + "description": "A monitor name to limit the search.", + "description_kind": "plain", + "optional": true + }, + "tags_filter": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to limit the search. This filters on the monitor scope.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Use this data source to list several existing monitors for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_permissions": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_restricted": { + "type": "bool", + "description": "Whether to include restricted permissions. Restricted permissions are granted by default to all users of a Datadog org, and cannot be manually granted or revoked. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "permissions": { + "type": [ + "map", + "string" + ], + "description": "Map of permissions names to their corresponding ID.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve the list of Datadog permissions by name and their corresponding ID, for use in the role resource.", + "description_kind": "plain" + } + }, + "datadog_role": { + "version": 0, + "block": { + "attributes": { + "filter": { + "type": "string", + "description": "A string on which to filter the roles.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the role.", + "description_kind": "plain", + "computed": true + }, + "user_count": { + "type": "number", + "description": "Number of users assigned to this role.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing role for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_roles": { + "version": 0, + "block": { + "attributes": { + "filter": { + "type": "string", + "description": "Filter all roles by the given string.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "roles": { + "type": [ + "list", + [ + "object", + { + "id": "string", + "name": "string", + "user_count": "number" + } + ] + ], + "description": "List of Roles", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about multiple roles for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_rum_application": { + "version": 0, + "block": { + "attributes": { + "client_token": { + "type": "string", + "description": "The client token.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "ID of the RUM application. Cannot be used with name and type filters.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the RUM application.", + "description_kind": "plain", + "computed": true + }, + "name_filter": { + "type": "string", + "description": "The name used to search for a RUM application.", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`.", + "description_kind": "plain", + "computed": true + }, + "type_filter": { + "type": "string", + "description": "The type used to search for a RUM application.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Use this data source to retrieve a Datadog RUM Application.", + "description_kind": "plain" + } + }, + "datadog_security_monitoring_filters": { + "version": 0, + "block": { + "attributes": { + "filters": { + "type": [ + "list", + [ + "object", + { + "exclusion_filter": [ + "list", + [ + "object", + { + "name": "string", + "query": "string" + } + ] + ], + "filtered_data_type": "string", + "is_enabled": "bool", + "name": "string", + "query": "string", + "version": "number" + } + ] + ], + "description": "List of filters.", + "description_kind": "plain", + "computed": true + }, + "filters_ids": { + "type": [ + "list", + "string" + ], + "description": "List of IDs of filters.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Use this data source to retrieve information about existing security monitoring filters for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_security_monitoring_rules": { + "version": 0, + "block": { + "attributes": { + "default_only_filter": { + "type": "bool", + "description": "Limit the search to default rules", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_filter": { + "type": "string", + "description": "A rule name to limit the search", + "description_kind": "plain", + "optional": true + }, + "rule_ids": { + "type": [ + "list", + "string" + ], + "description": "List of IDs of the matched rules.", + "description_kind": "plain", + "computed": true + }, + "rules": { + "type": [ + "list", + [ + "object", + { + "case": [ + "list", + [ + "object", + { + "condition": "string", + "name": "string", + "notifications": [ + "list", + "string" + ], + "status": "string" + } + ] + ], + "enabled": "bool", + "filter": [ + "list", + [ + "object", + { + "action": "string", + "query": "string" + } + ] + ], + "has_extended_title": "bool", + "message": "string", + "name": "string", + "options": [ + "list", + [ + "object", + { + "decrease_criticality_based_on_env": "bool", + "detection_method": "string", + "evaluation_window": "number", + "impossible_travel_options": [ + "list", + [ + "object", + { + "baseline_user_locations": "bool" + } + ] + ], + "keep_alive": "number", + "max_signal_duration": "number", + "new_value_options": [ + "list", + [ + "object", + { + "forget_after": "number", + "learning_duration": "number", + "learning_method": "string", + "learning_threshold": "number" + } + ] + ] + } + ] + ], + "query": [ + "list", + [ + "object", + { + "agent_rule": [ + "list", + [ + "object", + { + "agent_rule_id": "string", + "expression": "string" + } + ] + ], + "aggregation": "string", + "distinct_fields": [ + "list", + "string" + ], + "group_by_fields": [ + "list", + "string" + ], + "metric": "string", + "metrics": [ + "list", + "string" + ], + "name": "string", + "query": "string" + } + ] + ], + "signal_query": [ + "list", + [ + "object", + { + "aggregation": "string", + "correlated_by_fields": [ + "list", + "string" + ], + "correlated_query_index": "string", + "default_rule_id": "string", + "name": "string", + "rule_id": "string" + } + ] + ], + "tags": [ + "set", + "string" + ], + "type": "string" + } + ] + ], + "description": "List of rules.", + "description_kind": "plain", + "computed": true + }, + "tags_filter": { + "type": [ + "list", + "string" + ], + "description": "A list of tags to limit the search", + "description_kind": "plain", + "optional": true + }, + "user_only_filter": { + "type": "bool", + "description": "Limit the search to user rules", + "description_kind": "plain", + "optional": true + } + }, + "description": "Use this data source to retrieve information about existing security monitoring rules for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_sensitive_data_scanner_group_order": { + "version": 0, + "block": { + "attributes": { + "group_ids": { + "type": [ + "list", + "string" + ], + "description": "The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Provides a Datadog Sensitive Data Scanner Group Order API data source. This can be used to retrieve the order of Datadog Sensitive Data Scanner Groups.", + "description_kind": "plain" + } + }, + "datadog_sensitive_data_scanner_standard_pattern": { + "version": 0, + "block": { + "attributes": { + "filter": { + "type": "string", + "description": "Filter all the Datadog standard patterns by name.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the standard pattern.", + "description_kind": "plain", + "computed": true + }, + "pattern": { + "type": "string", + "description": "Regex that the standard pattern applies.", + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "List of tags.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing sensitive data scanner standard pattern.", + "description_kind": "plain" + } + }, + "datadog_service_account": { + "version": 0, + "block": { + "attributes": { + "disabled": { + "type": "bool", + "description": "Whether the user is disabled.", + "description_kind": "plain", + "computed": true + }, + "email": { + "type": "string", + "description": "Email of the user.", + "description_kind": "plain", + "computed": true + }, + "filter": { + "type": "string", + "description": "Filter all users and service accounts by name, email, or role.", + "description_kind": "plain", + "optional": true + }, + "filter_status": { + "type": "string", + "description": "Filter on status attribute. Comma separated list, with possible values `Active`, `Pending`, and `Disabled`.", + "description_kind": "plain", + "optional": true + }, + "handle": { + "type": "string", + "description": "Handle of the user.", + "description_kind": "plain", + "computed": true + }, + "icon": { + "type": "string", + "description": "URL of the user's icon.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The service account's ID.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the user.", + "description_kind": "plain", + "computed": true + }, + "roles": { + "type": [ + "list", + "string" + ], + "description": "Roles assigned to this service account.", + "description_kind": "plain", + "computed": true + }, + "status": { + "type": "string", + "description": "Status of the user.", + "description_kind": "plain", + "computed": true + }, + "title": { + "type": "string", + "description": "Title of the user.", + "description_kind": "plain", + "computed": true + }, + "verified": { + "type": "bool", + "description": "Whether the user is verified.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing Datadog service account.", + "description_kind": "plain" + } + }, + "datadog_service_level_objective": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "The description of the service level objective.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "A SLO ID to limit the search.", + "description_kind": "plain", + "optional": true + }, + "metrics_query": { + "type": "string", + "description": "Filter results based on SLO numerator and denominator.", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description": "Name of the Datadog service level objective", + "description_kind": "plain", + "computed": true + }, + "name_query": { + "type": "string", + "description": "Filter results based on SLO names.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": [ + "list", + [ + "object", + { + "denominator": "string", + "numerator": "string" + } + ] + ], + "description": "The metric query of good / total events", + "description_kind": "plain", + "computed": true + }, + "tags_query": { + "type": "string", + "description": "Filter results based on a single SLO tag.", + "description_kind": "plain", + "optional": true + }, + "target_threshold": { + "type": "number", + "description": "The primary target threshold of the service level objective.", + "description_kind": "plain", + "computed": true + }, + "timeframe": { + "type": "string", + "description": "The primary timeframe of the service level objective.", + "description_kind": "plain", + "computed": true + }, + "type": { + "type": "string", + "description": "The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Available values are: `metric` and `monitor`.", + "description_kind": "plain", + "computed": true + }, + "warning_threshold": { + "type": "number", + "description": "The primary warning threshold of the service level objective.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing SLO for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_service_level_objectives": { + "version": 0, + "block": { + "attributes": { + "error_on_empty_result": { + "type": "bool", + "description": "Throw an error if no results are found. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ids": { + "type": [ + "list", + "string" + ], + "description": "An array of SLO IDs to limit the search.", + "description_kind": "plain", + "optional": true + }, + "metrics_query": { + "type": "string", + "description": "Filter results based on SLO numerator and denominator.", + "description_kind": "plain", + "optional": true + }, + "name_query": { + "type": "string", + "description": "Filter results based on SLO names.", + "description_kind": "plain", + "optional": true + }, + "query": { + "type": "string", + "description": "The query string to filter results based on SLO names. Some examples of queries include service:\u003cservice-name\u003e and \u003cslo-name\u003e.", + "description_kind": "plain", + "optional": true + }, + "slos": { + "type": [ + "list", + [ + "object", + { + "id": "string", + "name": "string", + "type": "string" + } + ] + ], + "description": "List of SLOs", + "description_kind": "plain", + "computed": true + }, + "tags_query": { + "type": "string", + "description": "Filter results based on a single SLO tag.", + "description_kind": "plain", + "optional": true + } + }, + "description": "Use this data source to retrieve information about multiple SLOs for use in other resources.", + "description_kind": "plain" + } + }, + "datadog_synthetics_global_variable": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The synthetics global variable name to search for. Must only match one global variable.", + "description_kind": "plain", + "required": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags assigned to the Synthetics global variable.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve a Datadog Synthetics global variable (to be used in Synthetics tests).", + "description_kind": "plain" + } + }, + "datadog_synthetics_locations": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "locations": { + "type": [ + "map", + "string" + ], + "description": "A map of available Synthetics location IDs to names for Synthetics tests.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve Datadog's Synthetics Locations (to be used in Synthetics tests).", + "description_kind": "plain" + } + }, + "datadog_synthetics_test": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the synthetic test.", + "description_kind": "plain", + "computed": true + }, + "tags": { + "type": [ + "list", + "string" + ], + "description": "A list of tags assigned to the synthetic test.", + "description_kind": "plain", + "computed": true + }, + "test_id": { + "type": "string", + "description": "The synthetic test id or URL to search for", + "description_kind": "plain", + "required": true + }, + "url": { + "type": "string", + "description": "The start URL of the synthetic test.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve a Datadog Synthetic Test.", + "description_kind": "plain" + } + }, + "datadog_team": { + "version": 0, + "block": { + "attributes": { + "description": { + "type": "string", + "description": "Free-form markdown description/content for the team's homepage.", + "description_kind": "plain", + "computed": true + }, + "filter_keyword": { + "type": "string", + "description": "Search query. Can be team name, team handle, or email of team member.", + "description_kind": "plain", + "optional": true + }, + "handle": { + "type": "string", + "description": "The team's handle.", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "link_count": { + "type": "number", + "description": "The number of links belonging to the team.", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the team.", + "description_kind": "plain", + "computed": true + }, + "summary": { + "type": "string", + "description": "A brief summary of the team, derived from the `description`.", + "description_kind": "plain", + "computed": true + }, + "team_id": { + "type": "string", + "description": "The team's identifier.", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user_count": { + "type": "number", + "description": "The number of users belonging to the team.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing Datadog team.", + "description_kind": "plain" + } + }, + "datadog_team_memberships": { + "version": 0, + "block": { + "attributes": { + "exact_match": { + "type": "bool", + "description": "When true, `filter_keyword` string is exact matched against the user's `email`, followed by `name`.", + "description_kind": "plain", + "optional": true + }, + "filter_keyword": { + "type": "string", + "description": "Search query, can be user email or name.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "team_id": { + "type": "string", + "description": "The team's identifier.", + "description_kind": "plain", + "required": true + }, + "team_memberships": { + "type": [ + "list", + [ + "object", + { + "id": "string", + "role": "string", + "team_id": "string", + "user_id": "string" + } + ] + ], + "description": "List of team memberships.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about existing Datadog team memberships.", + "description_kind": "plain" + } + }, + "datadog_user": { + "version": 0, + "block": { + "attributes": { + "email": { + "type": "string", + "description": "Email of the user.", + "description_kind": "plain", + "computed": true + }, + "exact_match": { + "type": "bool", + "description": "When true, `filter` string is exact matched against the user's `email`, followed by `name` attribute. Defaults to `false`.", + "description_kind": "plain", + "optional": true + }, + "filter": { + "type": "string", + "description": "Filter all users by the given string.", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "Name of the user.", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about an existing user to use it in an other resources.", + "description_kind": "plain" + } + }, + "datadog_users": { + "version": 0, + "block": { + "attributes": { + "filter": { + "type": "string", + "description": "Filter all users by the given string.", + "description_kind": "plain", + "optional": true + }, + "filter_status": { + "type": "string", + "description": "Filter on status attribute. Comma-separated list with possible values of Active, Pending, and Disabled.", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description": "The ID of this resource.", + "description_kind": "plain", + "computed": true + }, + "users": { + "type": [ + "list", + [ + "object", + { + "email": "string", + "id": "string", + "name": "string" + } + ] + ], + "description": "List of users", + "description_kind": "plain", + "computed": true + } + }, + "description": "Use this data source to retrieve information about existing users for use in other resources.", + "description_kind": "plain" + } + } + } + } + } +} diff --git a/config/schema.json b/config/schema.json index d160792..ea5cb7e 100644 --- a/config/schema.json +++ b/config/schema.json @@ -1 +1 @@ -{"format_version":"1.0","provider_schemas":{"registry.terraform.io/hashicorp/null":{"provider":{"version":0,"block":{"description_kind":"plain"}},"resource_schemas":{"null_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"This is set to a random value at create time.","description_kind":"markdown","computed":true},"triggers":{"type":["map","string"],"description":"A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners.","description_kind":"markdown","optional":true}},"description":"The `null_resource` resource implements the standard resource lifecycle but takes no further action.\n\nThe `triggers` argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced.","description_kind":"markdown"}}},"data_source_schemas":{"null_data_source":{"version":0,"block":{"attributes":{"has_computed_default":{"type":"string","description":"If set, its literal value will be stored and returned. If not, its value defaults to `\"default\"`. This argument exists primarily for testing and has little practical use.","description_kind":"markdown","optional":true,"computed":true},"id":{"type":"string","description":"This attribute is only present for some legacy compatibility issues and should not be used. It will be removed in a future version.","description_kind":"markdown","deprecated":true,"computed":true},"inputs":{"type":["map","string"],"description":"A map of arbitrary strings that is copied into the `outputs` attribute, and accessible directly for interpolation.","description_kind":"markdown","optional":true},"outputs":{"type":["map","string"],"description":"After the data source is \"read\", a copy of the `inputs` map.","description_kind":"markdown","computed":true},"random":{"type":"string","description":"A random value. This is primarily for testing and has little practical use; prefer the [hashicorp/random provider](https://registry.terraform.io/providers/hashicorp/random) for more practical random number use-cases.","description_kind":"markdown","computed":true}},"description":"The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n","description_kind":"markdown","deprecated":true}}}}}} +{"format_version":"1.0","provider_schemas":{"registry.terraform.io/datadog/datadog":{"provider":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"(Required unless validate is false) Datadog API key. This can also be set via the DD_API_KEY environment variable.","description_kind":"plain","optional":true,"sensitive":true},"api_url":{"type":"string","description":"The API URL. This can also be set via the DD_HOST environment variable. Note that this URL must not end with the `/api/` path. For example, `https://api.datadoghq.com/` is a correct value, while `https://api.datadoghq.com/api/` is not. And if you're working with \"EU\" version of Datadog, use `https://api.datadoghq.eu/`. Other Datadog region examples: `https://api.us5.datadoghq.com/`, `https://api.us3.datadoghq.com/` and `https://api.ddog-gov.com/`. See https://docs.datadoghq.com/getting_started/site/ for all available regions.","description_kind":"plain","optional":true},"app_key":{"type":"string","description":"(Required unless validate is false) Datadog APP key. This can also be set via the DD_APP_KEY environment variable.","description_kind":"plain","optional":true,"sensitive":true},"http_client_retry_backoff_base":{"type":"number","description":"The HTTP request retry back off base. Defaults to 2.","description_kind":"plain","optional":true},"http_client_retry_backoff_multiplier":{"type":"number","description":"The HTTP request retry back off multiplier. Defaults to 2.","description_kind":"plain","optional":true},"http_client_retry_enabled":{"type":"string","description":"Enables request retries on HTTP status codes 429 and 5xx. Valid values are [`true`, `false`]. Defaults to `true`.","description_kind":"plain","optional":true},"http_client_retry_max_retries":{"type":"number","description":"The HTTP request maximum retry number. Defaults to 3.","description_kind":"plain","optional":true},"http_client_retry_timeout":{"type":"number","description":"The HTTP request retry timeout period. Defaults to 60 seconds.","description_kind":"plain","optional":true},"validate":{"type":"string","description":"Enables validation of the provided API key during provider initialization. Valid values are [`true`, `false`]. Default is true. When false, api_key won't be checked.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"datadog_api_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"key":{"type":"string","description":"The value of the API Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for API Key.","description_kind":"plain","required":true}},"description":"Provides a Datadog API Key resource. This can be used to create and manage Datadog API Keys.","description_kind":"plain"}},"datadog_apm_retention_filter":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"the status of the retention filter.","description_kind":"plain","required":true},"filter_type":{"type":"string","description":"The type of the retention filter, currently only spans-processing-sampling is available. Valid values are `spans-sampling-processor`.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the retention filter.","description_kind":"plain","required":true},"rate":{"type":"string","description":"Sample rate to apply to spans going through this retention filter as a string, a value of 1.0 keeps all spans matching the query.","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"single","block":{"attributes":{"query":{"type":"string","description":"The search query - following the span search syntax. Defaults to `\"*\"`.","description_kind":"plain","optional":true,"computed":true}},"description":"The spans filter. Spans matching this filter will be indexed and stored.","description_kind":"plain"}}},"description":"The object describing the configuration of the retention filter to create/update.","description_kind":"plain"}},"datadog_apm_retention_filter_order":{"version":0,"block":{"attributes":{"filter_ids":{"type":["list","string"],"description":"The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog [APM Retention Filters API](https://docs.datadoghq.com/api/v2/apm-retention-filters/) resource, which is used to manage Datadog APM retention filters order.","description_kind":"plain"}},"datadog_application_key":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"key":{"type":"string","description":"The value of the Application Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for Application Key.","description_kind":"plain","required":true}},"description":"Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys.","description_kind":"plain"}},"datadog_authn_mapping":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description":"Identity provider key.","description_kind":"plain","required":true},"role":{"type":"string","description":"The ID of a role to attach to all users with the corresponding key and value.","description_kind":"plain","required":true},"value":{"type":"string","description":"Identity provider value.","description_kind":"plain","required":true}},"description":"Provides a Datadog AuthN Mappings resource. This feature lets you automatically assign roles to users based on their SAML attributes.","description_kind":"plain"}},"datadog_child_organization":{"version":0,"block":{"attributes":{"api_key":{"type":["list",["object",{"key":"string","name":"string"}]],"description":"Datadog API key.","description_kind":"plain","computed":true},"application_key":{"type":["list",["object",{"hash":"string","name":"string","owner":"string"}]],"description":"An application key with its associated metadata.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the organization.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name for Child Organization after creation.","description_kind":"plain","required":true},"public_id":{"type":"string","description":"The `public_id` of the organization you are operating within.","description_kind":"plain","computed":true},"settings":{"type":["list",["object",{"private_widget_share":"bool","saml":["list",["object",{"enabled":"bool"}]],"saml_autocreate_access_role":"string","saml_autocreate_users_domains":["list",["object",{"domains":["list","string"],"enabled":"bool"}]],"saml_can_be_enabled":"bool","saml_idp_endpoint":"string","saml_idp_initiated_login":["list",["object",{"enabled":"bool"}]],"saml_idp_metadata_uploaded":"bool","saml_login_url":"string","saml_strict_mode":["list",["object",{"enabled":"bool"}]]}]],"description":"Organization settings","description_kind":"plain","computed":true},"user":{"type":["list",["object",{"access_role":"string","email":"string","name":"string"}]],"description":"Information about a user","description_kind":"plain","computed":true}},"description":"Provides a Datadog Child Organization resource. This can be used to create Datadog Child Organizations. To manage created organization use `datadog_organization_settings`.","description_kind":"plain"}},"datadog_cloud_configuration_rule":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Whether the cloud configuration rule is enabled.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Fields to group by when generating signals, e.g. @resource. Defaults to empty list.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"The message associated to the rule that will be shown in findings and signals.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the cloud configuration rule.","description_kind":"plain","required":true},"notifications":{"type":["list","string"],"description":"Notification targets for signals. Defaults to empty list.","description_kind":"plain","optional":true},"policy":{"type":"string","description":"Policy written in Rego format.","description_kind":"plain","required":true},"related_resource_types":{"type":["list","string"],"description":"Related resource types to be checked by the rule. Defaults to empty list.","description_kind":"plain","optional":true},"resource_type":{"type":"string","description":"Main resource type to be checked by the rule.","description_kind":"plain","required":true},"severity":{"type":"string","description":"Severity of the rule and associated signals. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"Tags of the rule, propagated to findings and signals. Defaults to empty list.","description_kind":"plain","optional":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description":"The type of filtering action. Valid values are `require`, `suppress`.","description_kind":"plain","required":true},"query":{"type":"string","description":"Query for selecting logs to apply the filtering action.","description_kind":"plain","required":true}},"description":"Additional queries to filter matched events before they are processed. Defaults to empty list","description_kind":"plain"}}},"description":"Provides a Datadog Cloud Configuration Rule resource.","description_kind":"plain"}},"datadog_cloud_workload_security_agent_rule":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"The description of the Agent rule. Defaults to `\"\"`.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Whether the Agent rule is enabled. Defaults to `true`.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The SECL expression of the Agent rule.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the Agent rule.","description_kind":"plain","required":true}},"description":"Provides a Datadog Cloud Workload Security Agent Rule API resource for agent rules.","description_kind":"plain"}},"datadog_dashboard":{"version":0,"block":{"attributes":{"dashboard_lists":{"type":["set","number"],"description":"A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior.","description_kind":"plain","optional":true},"dashboard_lists_removed":{"type":["set","number"],"description":"A list of dashboard lists this dashboard should be removed from. Internal only.","description_kind":"plain","computed":true},"description":{"type":"string","description":"The description of the dashboard.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_read_only":{"type":"bool","description":"Whether this dashboard is read-only. **Deprecated.** Prefer using `restricted_roles` to define which roles are required to edit the dashboard. Defaults to `false`.","description_kind":"plain","deprecated":true,"optional":true},"layout_type":{"type":"string","description":"The layout type of the dashboard. Valid values are `ordered`, `free`.","description_kind":"plain","required":true},"notify_list":{"type":["set","string"],"description":"The list of handles for the users to notify when changes are made to this dashboard.","description_kind":"plain","optional":true},"reflow_type":{"type":"string","description":"The reflow type of a new dashboard layout. Set this only when layout type is `ordered`. If set to `fixed`, the dashboard expects all widgets to have a layout, and if it's set to `auto`, widgets should not have layouts. Valid values are `auto`, `fixed`.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"UUIDs of roles whose associated users are authorized to edit the dashboard.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags assigned to the Dashboard. Only team names of the form `team:\u003cname\u003e` are supported.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the dashboard.","description_kind":"plain","required":true},"url":{"type":"string","description":"The URL of the dashboard.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"template_variable":{"nesting_mode":"list","block":{"attributes":{"available_values":{"type":["list","string"],"description":"The list of values that the template variable drop-down is be limited to","description_kind":"plain","optional":true},"default":{"type":"string","description":"The default value for the template variable on dashboard load. Cannot be used in conjunction with `defaults`. **Deprecated.** Use `defaults` instead.","description_kind":"plain","deprecated":true,"optional":true},"defaults":{"type":["list","string"],"description":"One or many default values for template variables on load. If more than one default is specified, they will be unioned together with `OR`. Cannot be used in conjunction with `default`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true}},"description":"The list of template variables for this dashboard.","description_kind":"plain"}},"template_variable_preset":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the preset.","description_kind":"plain","optional":true}},"block_types":{"template_variable":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the template variable","description_kind":"plain","optional":true},"value":{"type":"string","description":"The value that should be assumed by the template variable in this preset. Cannot be used in conjunction with `values`. **Deprecated.** Use `values` instead.","description_kind":"plain","deprecated":true,"optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified. Cannot be used in conjunction with `value`.","description_kind":"plain","optional":true}},"description":"The template variable names and assumed values under the given preset","description_kind":"plain"}}},"description":"The list of selectable template variable presets for this dashboard.","description_kind":"plain"}},"widget":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"number","description":"The ID of the widget.","description_kind":"plain","computed":true}},"block_types":{"alert_graph_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"viz_type":{"type":"string","description":"Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.","description_kind":"plain","required":true}},"description":"The definition for a Alert Graph widget.","description_kind":"plain"},"max_items":1},"alert_value_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"precision":{"type":"number","description":"The precision to use when displaying the value. Use `*` for maximum precision.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true}},"description":"The definition for a Alert Value widget.","description_kind":"plain"},"max_items":1},"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"check_status_definition":{"nesting_mode":"list","block":{"attributes":{"check":{"type":"string","description":"The check to use in the widget.","description_kind":"plain","required":true},"group":{"type":"string","description":"The check group to use in the widget.","description_kind":"plain","optional":true},"group_by":{"type":["list","string"],"description":"When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.","description_kind":"plain","optional":true},"grouping":{"type":"string","description":"The kind of grouping to use. Valid values are `check`, `cluster`.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to use in the widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Check Status widget.","description_kind":"plain"},"max_items":1},"distribution_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Distribution widget.","description_kind":"plain"},"max_items":1},"event_stream_definition":{"nesting_mode":"list","block":{"attributes":{"event_size":{"type":"string","description":"The size to use to display an event. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Stream widget.","description_kind":"plain"},"max_items":1},"event_timeline_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Timeline widget.","description_kind":"plain"},"max_items":1},"free_text_definition":{"nesting_mode":"list","block":{"attributes":{"color":{"type":"string","description":"The color of the text in the widget.","description_kind":"plain","optional":true},"font_size":{"type":"string","description":"The size of the text in the widget.","description_kind":"plain","optional":true},"text":{"type":"string","description":"The text to display in the widget.","description_kind":"plain","required":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true}},"description":"The definition for a Free Text widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"group_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the group title, options: `vivid_blue`, `vivid_purple`, `vivid_pink`, `vivid_orange`, `vivid_yellow`, `vivid_green`, `blue`, `purple`, `pink`, `orange`, `yellow`, `green`, `gray` or `white`","description_kind":"plain","optional":true},"banner_img":{"type":"string","description":"The image URL to display as a banner for the group.","description_kind":"plain","optional":true},"layout_type":{"type":"string","description":"The layout type of the group. Valid values are `ordered`.","description_kind":"plain","required":true},"show_title":{"type":"bool","description":"Whether to show the title or not. Defaults to `true`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the group.","description_kind":"plain","optional":true}},"block_types":{"widget":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"number","description":"The ID of the widget.","description_kind":"plain","computed":true}},"block_types":{"alert_graph_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"viz_type":{"type":"string","description":"Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.","description_kind":"plain","required":true}},"description":"The definition for a Alert Graph widget.","description_kind":"plain"},"max_items":1},"alert_value_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"precision":{"type":"number","description":"The precision to use when displaying the value. Use `*` for maximum precision.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true}},"description":"The definition for a Alert Value widget.","description_kind":"plain"},"max_items":1},"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"check_status_definition":{"nesting_mode":"list","block":{"attributes":{"check":{"type":"string","description":"The check to use in the widget.","description_kind":"plain","required":true},"group":{"type":"string","description":"The check group to use in the widget.","description_kind":"plain","optional":true},"group_by":{"type":["list","string"],"description":"When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.","description_kind":"plain","optional":true},"grouping":{"type":"string","description":"The kind of grouping to use. Valid values are `check`, `cluster`.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to use in the widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Check Status widget.","description_kind":"plain"},"max_items":1},"distribution_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Distribution widget.","description_kind":"plain"},"max_items":1},"event_stream_definition":{"nesting_mode":"list","block":{"attributes":{"event_size":{"type":"string","description":"The size to use to display an event. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Stream widget.","description_kind":"plain"},"max_items":1},"event_timeline_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Timeline widget.","description_kind":"plain"},"max_items":1},"free_text_definition":{"nesting_mode":"list","block":{"attributes":{"color":{"type":"string","description":"The color of the text in the widget.","description_kind":"plain","optional":true},"font_size":{"type":"string","description":"The size of the text in the widget.","description_kind":"plain","optional":true},"text":{"type":"string","description":"The text to display in the widget.","description_kind":"plain","required":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true}},"description":"The definition for a Free Text widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"heatmap_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Heatmap widget.","description_kind":"plain"},"max_items":1},"hostmap_definition":{"nesting_mode":"list","block":{"attributes":{"group":{"type":["list","string"],"description":"The list of tags to group nodes by.","description_kind":"plain","optional":true},"no_group_hosts":{"type":"bool","description":"A Boolean indicating whether to show ungrouped nodes.","description_kind":"plain","optional":true},"no_metric_hosts":{"type":"bool","description":"A Boolean indicating whether to show nodes with no metrics.","description_kind":"plain","optional":true},"node_type":{"type":"string","description":"The type of node used. Valid values are `host`, `container`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"The list of tags to filter nodes by.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"fill":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"size":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"fill_max":{"type":"string","description":"The max value to use to color the map.","description_kind":"plain","optional":true},"fill_min":{"type":"string","description":"The min value to use to color the map.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Hostmap widget.","description_kind":"plain"},"max_items":1},"iframe_definition":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true}},"description":"The definition for an Iframe widget.","description_kind":"plain"},"max_items":1},"image_definition":{"nesting_mode":"list","block":{"attributes":{"has_background":{"type":"bool","description":"Whether to display a background or not. Defaults to `true`.","description_kind":"plain","optional":true},"has_border":{"type":"bool","description":"Whether to display a border or not. Defaults to `true`.","description_kind":"plain","optional":true},"horizontal_align":{"type":"string","description":"The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"margin":{"type":"string","description":"The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.","description_kind":"plain","optional":true},"sizing":{"type":"string","description":"The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true},"url_dark_theme":{"type":"string","description":"The URL in dark mode to use as a data source for the widget.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for an Image widget","description_kind":"plain"},"max_items":1},"list_stream_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"response_format":{"type":"string","description":"Widget response format. Valid values are `event_list`.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Widget column field.","description_kind":"plain","required":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","required":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.","description_kind":"plain","required":true},"event_size":{"type":"string","description":"Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"List of indexes.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","optional":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated list stream widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.","description_kind":"plain"},"min_items":1}},"description":"The definition for a List Stream widget.","description_kind":"plain"},"max_items":1},"log_stream_definition":{"nesting_mode":"list","block":{"attributes":{"columns":{"type":["list","string"],"description":"Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"message_display":{"type":"string","description":"The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","optional":true},"show_date_column":{"type":"bool","description":"If the date column should be displayed.","description_kind":"plain","optional":true},"show_message_column":{"type":"bool","description":"If the message column should be displayed.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"The definition for an Log Stream widget.","description_kind":"plain"},"max_items":1},"manage_status_definition":{"nesting_mode":"list","block":{"attributes":{"color_preference":{"type":"string","description":"Whether to colorize text or background. Valid values are `background`, `text`.","description_kind":"plain","optional":true},"display_format":{"type":"string","description":"The display setting to use. Valid values are `counts`, `countsAndList`, `list`.","description_kind":"plain","optional":true},"hide_zero_counts":{"type":"bool","description":"A Boolean indicating whether to hide empty categories.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"show_last_triggered":{"type":"bool","description":"A Boolean indicating whether to show when monitors/groups last triggered.","description_kind":"plain","optional":true},"show_priority":{"type":"bool","description":"Whether to show the priorities column.","description_kind":"plain","optional":true},"sort":{"type":"string","description":"The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.","description_kind":"plain","optional":true},"summary_type":{"type":"string","description":"The summary type to use. Valid values are `monitors`, `groups`, `combined`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for an Manage Status widget.","description_kind":"plain"},"max_items":1},"note_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the note.","description_kind":"plain","optional":true},"content":{"type":"string","description":"The content of the note.","description_kind":"plain","required":true},"font_size":{"type":"string","description":"The size of the text.","description_kind":"plain","optional":true},"has_padding":{"type":"bool","description":"Whether to add padding or not. Defaults to `true`.","description_kind":"plain","optional":true},"show_tick":{"type":"bool","description":"Whether to show a tick or not.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"tick_edge":{"type":"string","description":"When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.","description_kind":"plain","optional":true},"tick_pos":{"type":"string","description":"When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for a Note widget.","description_kind":"plain"},"max_items":1},"powerpack_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the powerpack title.","description_kind":"plain","optional":true},"banner_img":{"type":"string","description":"URL of image to display as a banner for the powerpack.","description_kind":"plain","optional":true},"powerpack_id":{"type":"string","description":"UUID of the associated powerpack.","description_kind":"plain","required":true},"show_title":{"type":"bool","description":"Whether to show the title of the powerpack.","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title of the powerpack.","description_kind":"plain","optional":true}},"block_types":{"template_variables":{"nesting_mode":"list","block":{"block_types":{"controlled_by_powerpack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled at the powerpack level.","description_kind":"plain"}},"controlled_externally":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled by the external resource, such as the dashboard this powerpack is on.","description_kind":"plain"}}},"description":"The list of template variables for this powerpack.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Powerpack widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"run_workflow_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"workflow_id":{"type":"string","description":"Workflow ID","description_kind":"plain","required":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"input":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the workflow input.","description_kind":"plain","required":true},"value":{"type":"string","description":"Dashboard template variable. Can be suffixed with `.value` or `.key`.","description_kind":"plain","required":true}},"description":"Array of workflow inputs to map to dashboard template variables.","description_kind":"plain"}}},"description":"The definition for a Run Workflow widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"service_level_objective_definition":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"global_time_target":{"type":"string","description":"The global time target of the widget.","description_kind":"plain","optional":true},"show_error_budget":{"type":"bool","description":"Whether to show the error budget or not.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"The ID of the service level objective used by the widget.","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description":"A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"view_mode":{"type":"string","description":"The view mode for the widget. Valid values are `overall`, `component`, `both`.","description_kind":"plain","required":true},"view_type":{"type":"string","description":"The type of view to use when displaying the widget. Only `detail` is supported.","description_kind":"plain","required":true}},"description":"The definition for a Service Level Objective widget.","description_kind":"plain"},"max_items":1},"servicemap_definition":{"nesting_mode":"list","block":{"attributes":{"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The definition for a Service Map widget.","description_kind":"plain"},"max_items":1},"slo_list_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the SLO List request. Valid values are `slo_list`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of results to display in the table. Defaults to `100`.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","required":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated SLO List widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for an SLO (Service Level Objective) List widget.","description_kind":"plain"},"max_items":1},"split_graph_definition":{"nesting_mode":"list","block":{"attributes":{"has_uniform_y_axes":{"type":"bool","description":"Normalize y axes across graphs.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"size":{"type":"string","description":"Size of the individual graphs in the split.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"source_widget_definition":{"nesting_mode":"list","block":{"block_types":{"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1}},"description":"The original widget we are splitting on.","description_kind":"plain"},"min_items":1,"max_items":1},"split_config":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of graphs to display in the widget.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"How to aggregate the sort metric for the purposes of ordering.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric to use for sorting graphs.","description_kind":"plain","required":true}},"description":"Defines the metric and aggregation used as the sort value","description_kind":"plain"},"max_items":1}},"description":"Controls the order in which graphs appear in the split.","description_kind":"plain"},"min_items":1,"max_items":1},"split_dimensions":{"nesting_mode":"list","block":{"attributes":{"one_graph_per":{"type":"string","description":"The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag.","description_kind":"plain","required":true}},"description":"The property by which the graph splits","description_kind":"plain"},"min_items":1,"max_items":1},"static_splits":{"nesting_mode":"list","block":{"block_types":{"split_vector":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_values":{"type":["list","string"],"description_kind":"plain","required":true}},"description":"The split graph list contains a graph for each value of the split dimension.","description_kind":"plain"},"min_items":1}},"description":"The property by which the graph splits","description_kind":"plain"},"max_items":500}},"description":"Encapsulates all user choices about how to split a graph.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Split Graph widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"topology_map_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the Topology request ('topology'). Valid values are `topology`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.","description_kind":"plain","required":true},"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true}},"description":"The query for a Topology request.","description_kind":"plain"},"min_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).","description_kind":"plain"}}},"description":"The definition for a Topology Map widget.","description_kind":"plain"},"max_items":1},"trace_service_definition":{"nesting_mode":"list","block":{"attributes":{"display_format":{"type":"string","description":"The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.","description_kind":"plain","optional":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"show_breakdown":{"type":"bool","description":"Whether to show the latency breakdown or not.","description_kind":"plain","optional":true},"show_distribution":{"type":"bool","description":"Whether to show the latency distribution or not.","description_kind":"plain","optional":true},"show_errors":{"type":"bool","description":"Whether to show the error metrics or not.","description_kind":"plain","optional":true},"show_hits":{"type":"bool","description":"Whether to show the hits metrics or not","description_kind":"plain","optional":true},"show_latency":{"type":"bool","description":"Whether to show the latency metrics or not.","description_kind":"plain","optional":true},"show_resource_list":{"type":"bool","description":"Whether to show the resource list or not.","description_kind":"plain","optional":true},"size_format":{"type":"string","description":"The size of the widget. Valid values are `small`, `medium`, `large`.","description_kind":"plain","optional":true},"span_name":{"type":"string","description":"APM span name","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Trace Service widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1},"widget_layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","required":true},"is_column_break":{"type":"bool","description":"Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.","description_kind":"plain","optional":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","required":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true}},"description":"The layout of the widget on a 'free' dashboard.","description_kind":"plain"},"max_items":1}},"description":"The list of widgets in this group.","description_kind":"plain"}}},"description":"The definition for a Group widget.","description_kind":"plain"},"max_items":1},"heatmap_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Heatmap widget.","description_kind":"plain"},"max_items":1},"hostmap_definition":{"nesting_mode":"list","block":{"attributes":{"group":{"type":["list","string"],"description":"The list of tags to group nodes by.","description_kind":"plain","optional":true},"no_group_hosts":{"type":"bool","description":"A Boolean indicating whether to show ungrouped nodes.","description_kind":"plain","optional":true},"no_metric_hosts":{"type":"bool","description":"A Boolean indicating whether to show nodes with no metrics.","description_kind":"plain","optional":true},"node_type":{"type":"string","description":"The type of node used. Valid values are `host`, `container`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"The list of tags to filter nodes by.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"fill":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"size":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"fill_max":{"type":"string","description":"The max value to use to color the map.","description_kind":"plain","optional":true},"fill_min":{"type":"string","description":"The min value to use to color the map.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Hostmap widget.","description_kind":"plain"},"max_items":1},"iframe_definition":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true}},"description":"The definition for an Iframe widget.","description_kind":"plain"},"max_items":1},"image_definition":{"nesting_mode":"list","block":{"attributes":{"has_background":{"type":"bool","description":"Whether to display a background or not. Defaults to `true`.","description_kind":"plain","optional":true},"has_border":{"type":"bool","description":"Whether to display a border or not. Defaults to `true`.","description_kind":"plain","optional":true},"horizontal_align":{"type":"string","description":"The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"margin":{"type":"string","description":"The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.","description_kind":"plain","optional":true},"sizing":{"type":"string","description":"The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true},"url_dark_theme":{"type":"string","description":"The URL in dark mode to use as a data source for the widget.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for an Image widget","description_kind":"plain"},"max_items":1},"list_stream_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"response_format":{"type":"string","description":"Widget response format. Valid values are `event_list`.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Widget column field.","description_kind":"plain","required":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","required":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.","description_kind":"plain","required":true},"event_size":{"type":"string","description":"Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"List of indexes.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","optional":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated list stream widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.","description_kind":"plain"},"min_items":1}},"description":"The definition for a List Stream widget.","description_kind":"plain"},"max_items":1},"log_stream_definition":{"nesting_mode":"list","block":{"attributes":{"columns":{"type":["list","string"],"description":"Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"message_display":{"type":"string","description":"The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","optional":true},"show_date_column":{"type":"bool","description":"If the date column should be displayed.","description_kind":"plain","optional":true},"show_message_column":{"type":"bool","description":"If the message column should be displayed.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"The definition for an Log Stream widget.","description_kind":"plain"},"max_items":1},"manage_status_definition":{"nesting_mode":"list","block":{"attributes":{"color_preference":{"type":"string","description":"Whether to colorize text or background. Valid values are `background`, `text`.","description_kind":"plain","optional":true},"display_format":{"type":"string","description":"The display setting to use. Valid values are `counts`, `countsAndList`, `list`.","description_kind":"plain","optional":true},"hide_zero_counts":{"type":"bool","description":"A Boolean indicating whether to hide empty categories.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"show_last_triggered":{"type":"bool","description":"A Boolean indicating whether to show when monitors/groups last triggered.","description_kind":"plain","optional":true},"show_priority":{"type":"bool","description":"Whether to show the priorities column.","description_kind":"plain","optional":true},"sort":{"type":"string","description":"The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.","description_kind":"plain","optional":true},"summary_type":{"type":"string","description":"The summary type to use. Valid values are `monitors`, `groups`, `combined`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for an Manage Status widget.","description_kind":"plain"},"max_items":1},"note_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the note.","description_kind":"plain","optional":true},"content":{"type":"string","description":"The content of the note.","description_kind":"plain","required":true},"font_size":{"type":"string","description":"The size of the text.","description_kind":"plain","optional":true},"has_padding":{"type":"bool","description":"Whether to add padding or not. Defaults to `true`.","description_kind":"plain","optional":true},"show_tick":{"type":"bool","description":"Whether to show a tick or not.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"tick_edge":{"type":"string","description":"When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.","description_kind":"plain","optional":true},"tick_pos":{"type":"string","description":"When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for a Note widget.","description_kind":"plain"},"max_items":1},"powerpack_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the powerpack title.","description_kind":"plain","optional":true},"banner_img":{"type":"string","description":"URL of image to display as a banner for the powerpack.","description_kind":"plain","optional":true},"powerpack_id":{"type":"string","description":"UUID of the associated powerpack.","description_kind":"plain","required":true},"show_title":{"type":"bool","description":"Whether to show the title of the powerpack.","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title of the powerpack.","description_kind":"plain","optional":true}},"block_types":{"template_variables":{"nesting_mode":"list","block":{"block_types":{"controlled_by_powerpack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled at the powerpack level.","description_kind":"plain"}},"controlled_externally":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the variable.","description_kind":"plain","required":true},"prefix":{"type":"string","description":"The tag prefix associated with the variable. Only tags with this prefix appear in the variable dropdown.","description_kind":"plain","optional":true},"values":{"type":["list","string"],"description":"One or many template variable values within the saved view, which will be unioned together using `OR` if more than one is specified.","description_kind":"plain","required":true}},"description":"Template variables controlled by the external resource, such as the dashboard this powerpack is on.","description_kind":"plain"}}},"description":"The list of template variables for this powerpack.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Powerpack widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"run_workflow_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"workflow_id":{"type":"string","description":"Workflow ID","description_kind":"plain","required":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"input":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the workflow input.","description_kind":"plain","required":true},"value":{"type":"string","description":"Dashboard template variable. Can be suffixed with `.value` or `.key`.","description_kind":"plain","required":true}},"description":"Array of workflow inputs to map to dashboard template variables.","description_kind":"plain"}}},"description":"The definition for a Run Workflow widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"service_level_objective_definition":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"global_time_target":{"type":"string","description":"The global time target of the widget.","description_kind":"plain","optional":true},"show_error_budget":{"type":"bool","description":"Whether to show the error budget or not.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"The ID of the service level objective used by the widget.","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description":"A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"view_mode":{"type":"string","description":"The view mode for the widget. Valid values are `overall`, `component`, `both`.","description_kind":"plain","required":true},"view_type":{"type":"string","description":"The type of view to use when displaying the widget. Only `detail` is supported.","description_kind":"plain","required":true}},"description":"The definition for a Service Level Objective widget.","description_kind":"plain"},"max_items":1},"servicemap_definition":{"nesting_mode":"list","block":{"attributes":{"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The definition for a Service Map widget.","description_kind":"plain"},"max_items":1},"slo_list_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the SLO List request. Valid values are `slo_list`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of results to display in the table. Defaults to `100`.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","required":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated SLO List widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for an SLO (Service Level Objective) List widget.","description_kind":"plain"},"max_items":1},"split_graph_definition":{"nesting_mode":"list","block":{"attributes":{"has_uniform_y_axes":{"type":"bool","description":"Normalize y axes across graphs.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"size":{"type":"string","description":"Size of the individual graphs in the split.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"source_widget_definition":{"nesting_mode":"list","block":{"block_types":{"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1}},"description":"The original widget we are splitting on.","description_kind":"plain"},"min_items":1,"max_items":1},"split_config":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of graphs to display in the widget.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"How to aggregate the sort metric for the purposes of ordering.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric to use for sorting graphs.","description_kind":"plain","required":true}},"description":"Defines the metric and aggregation used as the sort value","description_kind":"plain"},"max_items":1}},"description":"Controls the order in which graphs appear in the split.","description_kind":"plain"},"min_items":1,"max_items":1},"split_dimensions":{"nesting_mode":"list","block":{"attributes":{"one_graph_per":{"type":"string","description":"The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag.","description_kind":"plain","required":true}},"description":"The property by which the graph splits","description_kind":"plain"},"min_items":1,"max_items":1},"static_splits":{"nesting_mode":"list","block":{"block_types":{"split_vector":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_values":{"type":["list","string"],"description_kind":"plain","required":true}},"description":"The split graph list contains a graph for each value of the split dimension.","description_kind":"plain"},"min_items":1}},"description":"The property by which the graph splits","description_kind":"plain"},"max_items":500}},"description":"Encapsulates all user choices about how to split a graph.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Split Graph widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"topology_map_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the Topology request ('topology'). Valid values are `topology`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.","description_kind":"plain","required":true},"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true}},"description":"The query for a Topology request.","description_kind":"plain"},"min_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).","description_kind":"plain"}}},"description":"The definition for a Topology Map widget.","description_kind":"plain"},"max_items":1},"trace_service_definition":{"nesting_mode":"list","block":{"attributes":{"display_format":{"type":"string","description":"The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.","description_kind":"plain","optional":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"show_breakdown":{"type":"bool","description":"Whether to show the latency breakdown or not.","description_kind":"plain","optional":true},"show_distribution":{"type":"bool","description":"Whether to show the latency distribution or not.","description_kind":"plain","optional":true},"show_errors":{"type":"bool","description":"Whether to show the error metrics or not.","description_kind":"plain","optional":true},"show_hits":{"type":"bool","description":"Whether to show the hits metrics or not","description_kind":"plain","optional":true},"show_latency":{"type":"bool","description":"Whether to show the latency metrics or not.","description_kind":"plain","optional":true},"show_resource_list":{"type":"bool","description":"Whether to show the resource list or not.","description_kind":"plain","optional":true},"size_format":{"type":"string","description":"The size of the widget. Valid values are `small`, `medium`, `large`.","description_kind":"plain","optional":true},"span_name":{"type":"string","description":"APM span name","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Trace Service widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1},"widget_layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","required":true},"is_column_break":{"type":"bool","description":"Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.","description_kind":"plain","optional":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","required":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true}},"description":"The layout of the widget on a 'free' dashboard.","description_kind":"plain"},"max_items":1}},"description":"The list of widgets to display on the dashboard.","description_kind":"plain"}}},"description":"Provides a Datadog dashboard resource. This can be used to create and manage Datadog dashboards.","description_kind":"plain"}},"datadog_dashboard_json":{"version":0,"block":{"attributes":{"dashboard":{"type":"string","description":"The JSON formatted definition of the Dashboard.","description_kind":"plain","required":true},"dashboard_lists":{"type":["set","number"],"description":"A list of dashboard lists this dashboard belongs to. This attribute should not be set if managing the corresponding dashboard lists using Terraform as it causes inconsistent behavior.","description_kind":"plain","optional":true},"dashboard_lists_removed":{"type":["set","number"],"description":"The list of dashboard lists this dashboard should be removed from. Internal only.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"url":{"type":"string","description":"The URL of the dashboard.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog dashboard JSON resource. This can be used to create and manage Datadog dashboards using the JSON definition.","description_kind":"plain"}},"datadog_dashboard_list":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the Dashboard List","description_kind":"plain","required":true}},"block_types":{"dash_item":{"nesting_mode":"set","block":{"attributes":{"dash_id":{"type":"string","description":"The ID of the dashboard to add","description_kind":"plain","required":true},"type":{"type":"string","description":"The type of this dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, `integration_screenboard`, `integration_timeboard`, `host_timeboard`.","description_kind":"plain","required":true}},"description":"A set of dashboard items that belong to this list","description_kind":"plain"}}},"description":"Provides a Datadog dashboard_list resource. This can be used to create and manage Datadog Dashboard Lists and the individual dashboards within them.","description_kind":"plain"}},"datadog_downtime":{"version":0,"block":{"attributes":{"active":{"type":"bool","description":"When true indicates this downtime is being actively applied","description_kind":"plain","computed":true},"active_child_id":{"type":"number","description":"The id corresponding to the downtime object definition of the active child for the original parent recurring downtime. This field will only exist on recurring downtimes.","description_kind":"plain","computed":true},"disabled":{"type":"bool","description":"When true indicates this downtime is not being applied","description_kind":"plain","computed":true},"end":{"type":"number","description":"Optionally specify an end date when this downtime should expire. Accepts a Unix timestamp in UTC.","description_kind":"plain","optional":true},"end_date":{"type":"string","description":"String representing date and time to end the downtime in RFC3339 format.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"An optional message to provide when creating the downtime, can include notification handles","description_kind":"plain","optional":true},"monitor_id":{"type":"number","description":"When specified, this downtime will only apply to this monitor","description_kind":"plain","optional":true},"monitor_tags":{"type":["set","string"],"description":"A list of monitor tags (up to 32) to base the scheduled downtime on. Only monitors that have all selected tags are silenced","description_kind":"plain","optional":true},"mute_first_recovery_notification":{"type":"bool","description":"When true the first recovery notification during the downtime will be muted Defaults to `false`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"specify the group scope to which this downtime applies. For everything use '*'","description_kind":"plain","required":true},"start":{"type":"number","description":"Specify when this downtime should start. Accepts a Unix timestamp in UTC.","description_kind":"plain","optional":true},"start_date":{"type":"string","description":"String representing date and time to start the downtime in RFC3339 format.","description_kind":"plain","optional":true},"timezone":{"type":"string","description":"The timezone for the downtime. Follows IANA timezone database identifiers. Defaults to `\"UTC\"`.","description_kind":"plain","optional":true}},"block_types":{"recurrence":{"nesting_mode":"list","block":{"attributes":{"period":{"type":"number","description":"How often to repeat as an integer. For example to repeat every 3 days, select a `type` of `days` and a `period` of `3`.","description_kind":"plain","optional":true},"rrule":{"type":"string","description":"The RRULE standard for defining recurring events. For example, to have a recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. Most common rrule options from the iCalendar Spec are supported. Attributes specifying the duration in RRULE are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). Only applicable when `type` is `rrule`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"One of `days`, `weeks`, `months`, `years`, or `rrule`.","description_kind":"plain","required":true},"until_date":{"type":"number","description":"The date at which the recurrence should end as a POSIX timestamp. `until_occurrences` and `until_date` are mutually exclusive.","description_kind":"plain","optional":true},"until_occurrences":{"type":"number","description":"How many times the downtime will be rescheduled. `until_occurrences` and `until_date` are mutually exclusive.","description_kind":"plain","optional":true},"week_days":{"type":["list","string"],"description":"A list of week days to repeat on. Choose from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. Only applicable when `type` is `weeks`. First letter must be capitalized.","description_kind":"plain","optional":true}},"description":"Optional recurring schedule for this downtime","description_kind":"plain"},"max_items":1}},"description":"This resource is deprecated — use the `datadog_downtime_schedule resource` instead. Provides a Datadog downtime resource. This can be used to create and manage Datadog downtimes.","description_kind":"plain","deprecated":true}},"datadog_downtime_schedule":{"version":0,"block":{"attributes":{"display_timezone":{"type":"string","description":"The timezone in which to display the downtime's start and end times in Datadog applications. This is not used as an offset for scheduling.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"message":{"type":"string","description":"A message to include with notifications for this downtime. Email notifications can be sent to specific users by using the same `@username` notation as events.","description_kind":"plain","optional":true},"mute_first_recovery_notification":{"type":"bool","description":"If the first recovery notification during a downtime should be muted.","description_kind":"plain","optional":true,"computed":true},"notify_end_states":{"type":["set","string"],"description":"States that will trigger a monitor notification when the `notify_end_types` action occurs.","description_kind":"plain","optional":true,"computed":true},"notify_end_types":{"type":["set","string"],"description":"Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state.","description_kind":"plain","optional":true,"computed":true},"scope":{"type":"string","description":"The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).","description_kind":"plain","required":true}},"block_types":{"monitor_identifier":{"nesting_mode":"single","block":{"attributes":{"monitor_id":{"type":"number","description":"ID of the monitor to prevent notifications.","description_kind":"plain","optional":true},"monitor_tags":{"type":["set","string"],"description":"A list of monitor tags. For example, tags that are applied directly to monitors, not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies. The resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags` to `[*]` configures the downtime to mute all monitors for the given scope.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"one_time_schedule":{"nesting_mode":"single","block":{"attributes":{"end":{"type":"string","description":"ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the downtime never ends.","description_kind":"plain","optional":true},"start":{"type":"string","description":"ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the downtime starts the moment it is created.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"recurring_schedule":{"nesting_mode":"single","block":{"attributes":{"timezone":{"type":"string","description":"The timezone in which to schedule the downtime.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"recurrence":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description":"The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'.","description_kind":"plain","required":true},"rrule":{"type":"string","description":"The `RRULE` standard for defining recurring events. For example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`. Most common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).","description_kind":"plain","required":true},"start":{"type":"string","description":"ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the downtime starts the moment it is created.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description":"Provides a Datadog DowntimeSchedule resource. This can be used to create and manage Datadog downtimes.","description_kind":"plain"}},"datadog_integration_aws":{"version":0,"block":{"attributes":{"access_key_id":{"type":"string","description":"Your AWS access key ID. Only required if your AWS account is a GovCloud or China account.","description_kind":"plain","optional":true},"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","optional":true},"account_specific_namespace_rules":{"type":["map","bool"],"description":"Enables or disables metric collection for specific AWS namespaces for this AWS account only. A list of namespaces can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules).","description_kind":"plain","optional":true},"cspm_resource_collection_enabled":{"type":"string","description":"Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource_collection.","description_kind":"plain","optional":true,"computed":true},"excluded_regions":{"type":["set","string"],"description":"An array of AWS regions to exclude from metrics collection.","description_kind":"plain","optional":true},"external_id":{"type":"string","description":"AWS External ID. **NOTE** This provider will not be able to detect changes made to the `external_id` field from outside Terraform.","description_kind":"plain","computed":true},"filter_tags":{"type":["list","string"],"description":"Array of EC2 tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from EC2. Wildcards, such as `?` (for single characters) and `*` (for multiple characters) can also be used. Only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. Host matching a given tag can also be excluded by adding `!` before the tag. e.x. `env:production,instance-type:c1.*,!region:us-east-1`.","description_kind":"plain","optional":true},"host_tags":{"type":["list","string"],"description":"Array of tags (in the form `key:value`) to add to all hosts and metrics reporting through this integration.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metrics_collection_enabled":{"type":"string","description":"Whether Datadog collects metrics for this AWS account.","description_kind":"plain","optional":true,"computed":true},"resource_collection_enabled":{"type":"string","description":"Whether Datadog collects a standard set of resources from your AWS account.","description_kind":"plain","optional":true,"computed":true},"role_name":{"type":"string","description":"Your Datadog role delegation name.","description_kind":"plain","optional":true},"secret_access_key":{"type":"string","description":"Your AWS secret access key. Only required if your AWS account is a GovCloud or China account.","description_kind":"plain","optional":true,"sensitive":true}},"description":"Provides a Datadog - Amazon Web Services integration resource. This can be used to create and manage Datadog - Amazon Web Services integration.\n\n","description_kind":"plain"}},"datadog_integration_aws_event_bridge":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"create_event_bus":{"type":"bool","description":"True if Datadog should create the event bus in addition to the event source. Requires the `events:CreateEventBus` permission. Defaults to `true`.","description_kind":"plain","optional":true,"computed":true},"event_generator_name":{"type":"string","description":"The given part of the event source name, which is then combined with an assigned suffix to form the full name.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"region":{"type":"string","description":"The event source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints).","description_kind":"plain","required":true}},"description":"Provides a Datadog - Amazon Web Services integration EventBridge resource. This can be used to create and manage Event Sources for each Datadog integrated AWS account.","description_kind":"plain"}},"datadog_integration_aws_lambda_arn":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"lambda_arn":{"type":"string","description":"The ARN of the Datadog forwarder Lambda.","description_kind":"plain","required":true}},"description":"Provides a Datadog - Amazon Web Services integration Lambda ARN resource. This can be used to create and manage the log collection Lambdas for an account.\n\nUpdate operations are currently not supported with datadog API so any change forces a new resource.","description_kind":"plain"}},"datadog_integration_aws_log_collection":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"services":{"type":["list","string"],"description":"A list of services to collect logs from. See the [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) for more details on which services are supported.","description_kind":"plain","required":true}},"description":"Provides a Datadog - Amazon Web Services integration log collection resource. This can be used to manage which AWS services logs are collected from for an account.","description_kind":"plain"}},"datadog_integration_aws_tag_filter":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Your AWS Account ID without dashes.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"namespace":{"type":"string","description":"The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`.","description_kind":"plain","required":true},"tag_filter_str":{"type":"string","description":"The tag filter string.","description_kind":"plain","required":true}},"description":"Provides a Datadog AWS tag filter resource. This can be used to create and manage Datadog AWS tag filters.","description_kind":"plain"}},"datadog_integration_azure":{"version":0,"block":{"attributes":{"app_service_plan_filters":{"type":"string","description":"This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure App Service Plans. Only App Service Plans that match one of the defined tags are imported into Datadog. The rest, including the apps and functions running on them, are ignored. This also filters the metrics for any App or Function running on the App Service Plan(s). Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"automute":{"type":"bool","description":"Silence monitors for expected Azure VM shutdowns. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"client_id":{"type":"string","description":"Your Azure web application ID.","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"(Required for Initial Creation) Your Azure web application secret key.","description_kind":"plain","required":true,"sensitive":true},"container_app_filters":{"type":"string","description":"This comma-separated list of tags (in the form `key:value,key:value`) defines a filter that Datadog uses when collecting metrics from Azure Container Apps. Only Container Apps that match one of the defined tags are imported into Datadog. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"cspm_enabled":{"type":"bool","description":"When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration.\nNote: This requires `resource_collection_enabled` to be set to true. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"custom_metrics_enabled":{"type":"bool","description":"Enable custom metrics for your organization. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"host_filters":{"type":"string","description":"String of host tag(s) (in the form `key:value,key:value`) defines a filter that Datadog will use when collecting metrics from Azure. Limit the Azure instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog. e.x. `env:production,deploymentgroup:red` Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"resource_collection_enabled":{"type":"bool","description":"When enabled, Datadog collects metadata and configuration info from cloud resources (such as compute instances, databases, and load balancers) monitored by this app registration.","description_kind":"plain","optional":true,"computed":true},"tenant_name":{"type":"string","description":"Your Azure Active Directory ID.","description_kind":"plain","required":true}},"description":"Provides a Datadog - Microsoft Azure integration resource. This can be used to create and manage the integrations.","description_kind":"plain"}},"datadog_integration_cloudflare_account":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The API key (or token) for the Cloudflare account.","description_kind":"plain","required":true,"sensitive":true},"email":{"type":"string","description":"The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the Cloudflare account.","description_kind":"plain","required":true}},"description":"Provides a Datadog IntegrationCloudflareAccount resource. This can be used to create and manage Datadog integration_cloudflare_account.","description_kind":"plain"}},"datadog_integration_confluent_account":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The API key associated with your Confluent account.","description_kind":"plain","required":true},"api_secret":{"type":"string","description":"The API secret associated with your Confluent account.","description_kind":"plain","required":true,"sensitive":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.","description_kind":"plain","optional":true}},"description":"Provides a Datadog IntegrationConfluentAccount resource. This can be used to create and manage Datadog integration_confluent_account.","description_kind":"plain"}},"datadog_integration_confluent_resource":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Confluent Account ID.","description_kind":"plain","required":true},"enable_custom_metrics":{"type":"bool","description":"Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"resource_id":{"type":"string","description":"The ID associated with a Confluent resource.","description_kind":"plain","required":true},"resource_type":{"type":"string","description":"The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.","description_kind":"plain","optional":true}},"description":"Provides a Datadog IntegrationConfluentResource resource. This can be used to create and manage Datadog integration_confluent_resource.","description_kind":"plain"}},"datadog_integration_fastly_account":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The API key for the Fastly account.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the Fastly account.","description_kind":"plain","required":true}},"description":"Provides a Datadog IntegrationFastlyAccount resource. This can be used to create and manage Datadog integration_fastly_account.","description_kind":"plain"}},"datadog_integration_fastly_service":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"Fastly Account id.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"service_id":{"type":"string","description":"The ID of the Fastly service.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags for the Fastly service.","description_kind":"plain","optional":true}},"description":"Provides a Datadog IntegrationFastlyService resource. This can be used to create and manage Datadog integration_fastly_service.","description_kind":"plain"}},"datadog_integration_gcp":{"version":0,"block":{"attributes":{"automute":{"type":"bool","description":"Silence monitors for expected GCE instance shutdowns. Defaults to `false`.","description_kind":"plain","optional":true},"client_email":{"type":"string","description":"Your email found in your JSON service account key.","description_kind":"plain","required":true},"client_id":{"type":"string","description":"Your ID found in your JSON service account key.","description_kind":"plain","required":true},"cspm_resource_collection_enabled":{"type":"bool","description":"Whether Datadog collects cloud security posture management resources from your GCP project. Defaults to `false`.","description_kind":"plain","optional":true},"host_filters":{"type":"string","description":"Limit the GCE instances that are pulled into Datadog by using tags. Only hosts that match one of the defined tags are imported into Datadog.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"private_key":{"type":"string","description":"Your private key name found in your JSON service account key.","description_kind":"plain","required":true,"sensitive":true},"private_key_id":{"type":"string","description":"Your private key ID found in your JSON service account key.","description_kind":"plain","required":true},"project_id":{"type":"string","description":"Your Google Cloud project ID found in your JSON service account key.","description_kind":"plain","required":true}},"description":"This resource is deprecated — use the `datadog_integration_gcp_sts resource` instead. Provides a Datadog - Google Cloud Platform integration resource. This can be used to create and manage Datadog - Google Cloud Platform integration.","description_kind":"plain","deprecated":true}},"datadog_integration_gcp_sts":{"version":0,"block":{"attributes":{"automute":{"type":"bool","description":"Silence monitors for expected GCE instance shutdowns.","description_kind":"plain","optional":true,"computed":true},"client_email":{"type":"string","description":"Your service account email address.","description_kind":"plain","required":true},"delegate_account_email":{"type":"string","description":"Datadog's STS Delegate Email.","description_kind":"plain","computed":true},"host_filters":{"type":["set","string"],"description":"Your Host Filters.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"is_cspm_enabled":{"type":"bool","description":"When enabled, Datadog performs configuration checks across your Google Cloud environment by continuously scanning every resource, which may incur additional charges.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog Integration GCP Sts resource. This can be used to create and manage Datadog - Google Cloud Platform integration.","description_kind":"plain"}},"datadog_integration_opsgenie_service_object":{"version":0,"block":{"attributes":{"custom_url":{"type":"string","description":"The custom url for a custom region.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name for the Opsgenie service.","description_kind":"plain","required":true},"opsgenie_api_key":{"type":"string","description":"The Opsgenie API key for the Opsgenie service. Note: Since the Datadog API never returns Opsgenie API keys, it is impossible to detect [drifts](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform). The best way to solve a drift is to manually mark the Service Object resource with [terraform taint](https://www.terraform.io/docs/commands/taint.html) to have it destroyed and recreated.","description_kind":"plain","required":true,"sensitive":true},"region":{"type":"string","description":"The region for the Opsgenie service. Valid values are `us`, `eu`, `custom`.","description_kind":"plain","required":true}},"description":"Resource for interacting with Datadog Opsgenie Service API.","description_kind":"plain"}},"datadog_integration_pagerduty":{"version":0,"block":{"attributes":{"api_token":{"type":"string","description":"Your PagerDuty API token.","description_kind":"plain","optional":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"schedules":{"type":["list","string"],"description":"Array of your schedule URLs.","description_kind":"plain","optional":true},"subdomain":{"type":"string","description":"Your PagerDuty account’s personalized subdomain name.","description_kind":"plain","required":true}},"description":"Provides a Datadog - PagerDuty resource. This can be used to create and manage Datadog - PagerDuty integration. See also [PagerDuty Integration Guide](https://www.pagerduty.com/docs/guides/datadog-integration-guide/).","description_kind":"plain"}},"datadog_integration_pagerduty_service_object":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service_key":{"type":"string","description":"Your Service name associated service key in PagerDuty. This key may also be referred to as an Integration Key or Routing Key in the Pagerduty Integration [documentation](https://www.pagerduty.com/docs/guides/datadog-integration-guide/), UI, and within the [Pagerduty Provider for Terraform](https://registry.terraform.io/providers/PagerDuty/pagerduty/latest/docs/resources/service_integration#integration_key) Note: Since the Datadog API never returns service keys, it is impossible to detect [drifts](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform). The best way to solve a drift is to manually mark the Service Object resource with [terraform taint](https://www.terraform.io/docs/commands/taint.html) to have it destroyed and recreated.","description_kind":"plain","required":true,"sensitive":true},"service_name":{"type":"string","description":"Your Service name in PagerDuty.","description_kind":"plain","required":true}},"description":"Provides access to individual Service Objects of Datadog - PagerDuty integrations. Note that the Datadog - PagerDuty integration must be activated in the Datadog UI in order for this resource to be usable.","description_kind":"plain"}},"datadog_integration_slack_channel":{"version":0,"block":{"attributes":{"account_name":{"type":"string","description":"Slack account name.","description_kind":"plain","required":true},"channel_name":{"type":"string","description":"Slack channel name.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"display":{"nesting_mode":"list","block":{"attributes":{"message":{"type":"bool","description":"Show the main body of the alert event. Defaults to `true`.","description_kind":"plain","optional":true},"notified":{"type":"bool","description":"Show the list of @-handles in the alert event. Defaults to `true`.","description_kind":"plain","optional":true},"snapshot":{"type":"bool","description":"Show the alert event's snapshot image. Defaults to `true`.","description_kind":"plain","optional":true},"tags":{"type":"bool","description":"Show the scopes on which the monitor alerted. Defaults to `true`.","description_kind":"plain","optional":true}},"description":"Configuration options for what is shown in an alert event message.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Resource for interacting with the Datadog Slack channel API","description_kind":"plain"}},"datadog_ip_allowlist":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Whether the IP Allowlist is enabled.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"block_types":{"entry":{"nesting_mode":"set","block":{"attributes":{"cidr_block":{"type":"string","description":"IP address or range of addresses.","description_kind":"plain","required":true},"note":{"type":"string","description":"Note accompanying IP address.","description_kind":"plain","optional":true}},"description":"Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note.","description_kind":"plain"}}},"description":"Provides the Datadog IP allowlist resource. This can be used to manage the Datadog IP allowlist","description_kind":"plain"}},"datadog_logs_archive":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_tags":{"type":"bool","description":"To store the tags in the archive, set the value `true`. If it is set to `false`, the tags will be dropped when the logs are sent to the archive. Defaults to `false`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Your archive name.","description_kind":"plain","required":true},"query":{"type":"string","description":"The archive query/filter. Logs matching this query are included in the archive.","description_kind":"plain","required":true},"rehydration_max_scan_size_in_gb":{"type":"number","description":"To limit the rehydration scan size for the archive, set a value in GB.","description_kind":"plain","optional":true},"rehydration_tags":{"type":["list","string"],"description":"An array of tags to add to rehydrated logs from an archive.","description_kind":"plain","optional":true}},"block_types":{"azure_archive":{"nesting_mode":"list","block":{"attributes":{"client_id":{"type":"string","description":"Your client id.","description_kind":"plain","required":true},"container":{"type":"string","description":"The container where the archive is stored.","description_kind":"plain","required":true},"path":{"type":"string","description":"The path where the archive is stored.","description_kind":"plain","optional":true},"storage_account":{"type":"string","description":"The associated storage account.","description_kind":"plain","required":true},"tenant_id":{"type":"string","description":"Your tenant id.","description_kind":"plain","required":true}},"description":"Definition of an azure archive.","description_kind":"plain"},"max_items":1},"gcs_archive":{"nesting_mode":"list","block":{"attributes":{"bucket":{"type":"string","description":"Name of your GCS bucket.","description_kind":"plain","required":true},"client_email":{"type":"string","description":"Your client email.","description_kind":"plain","required":true},"path":{"type":"string","description":"Path where the archive is stored.","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"Your project id.","description_kind":"plain","required":true}},"description":"Definition of a GCS archive.","description_kind":"plain"},"max_items":1},"s3_archive":{"nesting_mode":"list","block":{"attributes":{"account_id":{"type":"string","description":"Your AWS account id.","description_kind":"plain","required":true},"bucket":{"type":"string","description":"Name of your s3 bucket.","description_kind":"plain","required":true},"path":{"type":"string","description":"Path where the archive is stored.","description_kind":"plain","optional":true},"role_name":{"type":"string","description":"Your AWS role name","description_kind":"plain","required":true}},"description":"Definition of an s3 archive.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog Logs Archive API resource, which is used to create and manage Datadog logs archives.","description_kind":"plain"}},"datadog_logs_archive_order":{"version":0,"block":{"attributes":{"archive_ids":{"type":["list","string"],"description":"The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs. If `archive_ids` is empty or not specified, it will import the actual archive order, and create the resource. Otherwise, it will try to update the order.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog [Logs Archive API](https://docs.datadoghq.com/api/v2/logs-archives/) resource, which is used to manage Datadog log archives order.","description_kind":"plain"}},"datadog_logs_custom_pipeline":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"processor":{"nesting_mode":"list","block":{"block_types":{"arithmetic_processor":{"nesting_mode":"list","block":{"attributes":{"expression":{"type":"string","description":"Arithmetic operation between one or more log attributes.","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description":"Boolean value to enable your pipeline.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Your pipeline name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the arithmetic operation.","description_kind":"plain","required":true}},"description":"Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)","description_kind":"plain"},"max_items":1},"attribute_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"override_on_conflict":{"type":"bool","description":"Override the target element if already set.","description_kind":"plain","optional":true},"preserve_source":{"type":"bool","description":"Remove or preserve the remapped source element.","description_kind":"plain","optional":true},"source_type":{"type":"string","description":"Defines where the sources are from (log `attribute` or `tag`).","description_kind":"plain","required":true},"sources":{"type":["list","string"],"description":"List of source attributes or tags.","description_kind":"plain","required":true},"target":{"type":"string","description":"Final attribute or tag name to remap the sources.","description_kind":"plain","required":true},"target_format":{"type":"string","description":"If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified.","description_kind":"plain","optional":true},"target_type":{"type":"string","description":"Defines if the target is a log `attribute` or `tag`.","description_kind":"plain","required":true}},"description":"Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)","description_kind":"plain"},"max_items":1},"category_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the category","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the target attribute whose value is defined by the matching category.","description_kind":"plain","required":true}},"block_types":{"category":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"List of filters to match or exclude a log with their corresponding name to assign a custom value to the log.","description_kind":"plain"},"min_items":1}},"description":"Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)","description_kind":"plain"},"max_items":1},"date_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)","description_kind":"plain"},"max_items":1},"geo_ip_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)","description_kind":"plain"},"max_items":1},"grok_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"samples":{"type":["list","string"],"description":"List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters.","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the log attribute to parse.","description_kind":"plain","required":true}},"block_types":{"grok":{"nesting_mode":"list","block":{"attributes":{"match_rules":{"type":"string","description":"Match rules for your grok parser.","description_kind":"plain","required":true},"support_rules":{"type":"string","description":"Support rules for your grok parser.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)","description_kind":"plain"},"max_items":1},"lookup_processor":{"nesting_mode":"list","block":{"attributes":{"default_lookup":{"type":"string","description":"Default lookup value to use if there is no entry in the lookup table for the value of the source attribute.","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_table":{"type":["list","string"],"description":"List of entries of the lookup table using `key,value` format.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"message_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)","description_kind":"plain"},"max_items":1},"pipeline":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"processor":{"nesting_mode":"list","block":{"block_types":{"arithmetic_processor":{"nesting_mode":"list","block":{"attributes":{"expression":{"type":"string","description":"Arithmetic operation between one or more log attributes.","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description":"Boolean value to enable your pipeline.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If true, it replaces all missing attributes of expression by 0, false skips the operation if an attribute is missing.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Your pipeline name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the arithmetic operation.","description_kind":"plain","required":true}},"description":"Arithmetic Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)","description_kind":"plain"},"max_items":1},"attribute_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"override_on_conflict":{"type":"bool","description":"Override the target element if already set.","description_kind":"plain","optional":true},"preserve_source":{"type":"bool","description":"Remove or preserve the remapped source element.","description_kind":"plain","optional":true},"source_type":{"type":"string","description":"Defines where the sources are from (log `attribute` or `tag`).","description_kind":"plain","required":true},"sources":{"type":["list","string"],"description":"List of source attributes or tags.","description_kind":"plain","required":true},"target":{"type":"string","description":"Final attribute or tag name to remap the sources.","description_kind":"plain","required":true},"target_format":{"type":"string","description":"If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type. If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types. If the `target_type` is `tag`, this parameter may not be specified.","description_kind":"plain","optional":true},"target_type":{"type":"string","description":"Defines if the target is a log `attribute` or `tag`.","description_kind":"plain","required":true}},"description":"Attribute Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)","description_kind":"plain"},"max_items":1},"category_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the category","description_kind":"plain","optional":true},"target":{"type":"string","description":"Name of the target attribute whose value is defined by the matching category.","description_kind":"plain","required":true}},"block_types":{"category":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Filter criteria of the category.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"List of filters to match or exclude a log with their corresponding name to assign a custom value to the log.","description_kind":"plain"},"min_items":1}},"description":"Category Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)","description_kind":"plain"},"max_items":1},"date_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Date Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)","description_kind":"plain"},"max_items":1},"geo_ip_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"Date GeoIP Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)","description_kind":"plain"},"max_items":1},"grok_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"samples":{"type":["list","string"],"description":"List of sample logs for this parser. It can save up to 5 samples. Each sample takes up to 5000 characters.","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the log attribute to parse.","description_kind":"plain","required":true}},"block_types":{"grok":{"nesting_mode":"list","block":{"attributes":{"match_rules":{"type":"string","description":"Match rules for your grok parser.","description_kind":"plain","required":true},"support_rules":{"type":"string","description":"Support rules for your grok parser.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Grok Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)","description_kind":"plain"},"max_items":1},"lookup_processor":{"nesting_mode":"list","block":{"attributes":{"default_lookup":{"type":"string","description":"Default lookup value to use if there is no entry in the lookup table for the value of the source attribute.","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_table":{"type":["list","string"],"description":"List of entries of the lookup table using `key,value` format.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Lookup Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"message_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Message Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)","description_kind":"plain"},"max_items":1},"reference_table_lookup_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_enrichment_table":{"type":"string","description":"Name of the Reference Table for the source attribute and their associated target attribute values.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"service_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)","description_kind":"plain"},"max_items":1},"status_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)","description_kind":"plain"},"max_items":1},"string_builder_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If it replaces all missing attributes of template by an empty string.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the processor.","description_kind":"plain","optional":true},"target":{"type":"string","description":"The name of the attribute that contains the result of the template.","description_kind":"plain","required":true},"template":{"type":"string","description":"The formula with one or more attributes and raw text.","description_kind":"plain","required":true}},"description":"String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)","description_kind":"plain"},"max_items":1},"trace_id_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)","description_kind":"plain"},"max_items":1},"url_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"normalize_ending_slashes":{"type":"bool","description":"Normalize the ending slashes or not.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)","description_kind":"plain"},"max_items":1},"user_agent_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_encoded":{"type":"bool","description":"If the source attribute is URL encoded or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser)","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"reference_table_lookup_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"lookup_enrichment_table":{"type":"string","description":"Name of the Reference Table for the source attribute and their associated target attribute values.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"source":{"type":"string","description":"Name of the source attribute used to do the lookup.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the attribute that contains the result of the lookup.","description_kind":"plain","required":true}},"description":"Reference Table Lookup Processor. Reference Tables are in public beta. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)","description_kind":"plain"},"max_items":1},"service_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Service Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)","description_kind":"plain"},"max_items":1},"status_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Status Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)","description_kind":"plain"},"max_items":1},"string_builder_processor":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_replace_missing":{"type":"bool","description":"If it replaces all missing attributes of template by an empty string.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the processor.","description_kind":"plain","optional":true},"target":{"type":"string","description":"The name of the attribute that contains the result of the template.","description_kind":"plain","required":true},"template":{"type":"string","description":"The formula with one or more attributes and raw text.","description_kind":"plain","required":true}},"description":"String Builder Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)","description_kind":"plain"},"max_items":1},"trace_id_remapper":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true}},"description":"Trace ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)","description_kind":"plain"},"max_items":1},"url_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"normalize_ending_slashes":{"type":"bool","description":"Normalize the ending slashes or not.","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"URL Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)","description_kind":"plain"},"max_items":1},"user_agent_parser":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"If the processor is enabled or not.","description_kind":"plain","optional":true},"is_encoded":{"type":"bool","description":"If the source attribute is URL encoded or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the processor","description_kind":"plain","optional":true},"sources":{"type":["list","string"],"description":"List of source attributes.","description_kind":"plain","required":true},"target":{"type":"string","description":"Name of the parent attribute that contains all the extracted details from the sources.","description_kind":"plain","required":true}},"description":"User-Agent Parser Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser)","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Provides a Datadog [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/) resource, which is used to create and manage Datadog logs custom pipelines. Each `datadog_logs_custom_pipeline` resource defines a complete pipeline. The order of the pipelines is maintained in a different resource: `datadog_logs_pipeline_order`. When creating a new pipeline, you need to **explicitly** add this pipeline to the `datadog_logs_pipeline_order` resource to track the pipeline. Similarly, when a pipeline needs to be destroyed, remove its references from the `datadog_logs_pipeline_order` resource.","description_kind":"plain"}},"datadog_logs_index":{"version":0,"block":{"attributes":{"daily_limit":{"type":"number","description":"The number of log events you can send in this index per day before you are rate-limited.","description_kind":"plain","optional":true},"daily_limit_warning_threshold_percentage":{"type":"number","description":"A percentage threshold of the daily quota at which a Datadog warning event is generated.","description_kind":"plain","optional":true,"computed":true},"disable_daily_limit":{"type":"bool","description":"If true, sets the daily_limit value to null and the index is not limited on a daily basis (any specified daily_limit value in the request is ignored). If false or omitted, the index's current daily_limit is maintained.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the index.","description_kind":"plain","required":true},"retention_days":{"type":"number","description":"The number of days before logs are deleted from this index.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"daily_limit_reset":{"nesting_mode":"list","block":{"attributes":{"reset_time":{"type":"string","description":"String in `HH:00` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive).","description_kind":"plain","required":true},"reset_utc_offset":{"type":"string","description":"String in `(-|+)HH:00` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive).","description_kind":"plain","required":true}},"description":"Object containing options to override the default daily limit reset time.","description_kind":"plain"},"max_items":1},"exclusion_filter":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description":"A boolean stating if the exclusion is active or not.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the exclusion filter.","description_kind":"plain","optional":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Only logs matching the filter criteria and the query of the parent index will be considered for this exclusion filter.","description_kind":"plain","optional":true},"sample_rate":{"type":"number","description":"The fraction of logs excluded by the exclusion filter, when active.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"List of exclusion filters.","description_kind":"plain"}},"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Logs filter criteria. Only logs matching this filter criteria are considered for this index.","description_kind":"plain","required":true}},"description":"Logs filter","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Provides a Datadog Logs Index API resource. This can be used to create and manage Datadog logs indexes. \n**Note:** It is not possible to delete logs indexes through Terraform, so an index remains in your account after the resource is removed from your terraform config. Reach out to support to delete a logs index.","description_kind":"plain"}},"datadog_logs_index_order":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"indexes":{"type":["list","string"],"description":"The index resource list. Logs are tested against the query filter of each index one by one following the order of the list.","description_kind":"plain","required":true},"name":{"type":"string","description":"The unique name of the index order resource.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog Logs Index API resource. This can be used to manage the order of Datadog logs indexes.","description_kind":"plain"}},"datadog_logs_integration_pipeline":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Boolean value to enable your pipeline.","description_kind":"plain","optional":true}},"description":"Provides a Datadog Logs Pipeline API resource to manage the integrations. Integration pipelines are the pipelines that are automatically installed for your organization when sending the logs with specific sources. You don't need to maintain or update these types of pipelines. Keeping them as resources, however, allows you to manage the order of your pipelines by referencing them in your `datadog_logs_pipeline_order` resource. If you don't need the `pipeline_order` feature, this resource declaration can be omitted.","description_kind":"plain"}},"datadog_logs_metric":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the log-based metric. This field can't be updated after creation.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation_type":{"type":"string","description":"The type of aggregation to use. This field can't be updated after creation. Valid values are `count`, `distribution`.","description_kind":"plain","required":true},"include_percentiles":{"type":"bool","description":"Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have an `aggregation_type` of distribution.","description_kind":"plain","optional":true},"path":{"type":"string","description":"The path to the value the log-based metric will aggregate on (only used if the aggregation type is a \"distribution\"). This field can't be updated after creation.","description_kind":"plain","optional":true}},"description":"The compute rule to compute the log-based metric. This field can't be updated after creation.","description_kind":"plain"},"min_items":1,"max_items":1},"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The search query - following the log search syntax.","description_kind":"plain","required":true}},"description":"The log-based metric filter. Logs matching this filter will be aggregated in this metric.","description_kind":"plain"},"min_items":1,"max_items":1},"group_by":{"nesting_mode":"set","block":{"attributes":{"path":{"type":"string","description":"The path to the value the log-based metric will be aggregated over.","description_kind":"plain","required":true},"tag_name":{"type":"string","description":"Name of the tag that gets created.","description_kind":"plain","required":true}},"description":"The rules for the group by.","description_kind":"plain"}}},"description":"Resource for interacting with the logs_metric API","description_kind":"plain"}},"datadog_logs_pipeline_order":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name attribute in the resource `datadog_logs_pipeline_order` needs to be unique. It's recommended to use the same value as the resource name. No related field is available in [Logs Pipeline API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order).","description_kind":"plain","required":true},"pipelines":{"type":["list","string"],"description":"The pipeline IDs list. The order of pipeline IDs in this attribute defines the overall pipeline order for logs.","description_kind":"plain","required":true}},"description":"Provides a Datadog Logs Pipeline API resource, which is used to manage Datadog log pipelines order.","description_kind":"plain"}},"datadog_metric_metadata":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description of the metric.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metric":{"type":"string","description":"The name of the metric.","description_kind":"plain","required":true},"per_unit":{"type":"string","description":"Per unit of the metric such as `second` in `bytes per second`.","description_kind":"plain","optional":true},"short_name":{"type":"string","description":"A short name of the metric.","description_kind":"plain","optional":true},"statsd_interval":{"type":"number","description":"If applicable, statsd flush interval in seconds for the metric.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Metric type such as `count`, `gauge`, or `rate`. Updating a metric of type `distribution` is not supported. If you would like to see the `distribution` type returned, contact [Datadog support](https://docs.datadoghq.com/help/).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"Primary unit of the metric such as `byte` or `operation`.","description_kind":"plain","optional":true}},"description":"Provides a Datadog metric_metadata resource. This can be used to manage a metric's metadata.","description_kind":"plain"}},"datadog_metric_tag_configuration":{"version":0,"block":{"attributes":{"exclude_tags_mode":{"type":"bool","description":"Toggle to include/exclude tags as queryable for your metric. Can only be applied to metrics that have one or more tags configured. Defaults to `false`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_percentiles":{"type":"bool","description":"Toggle to include/exclude percentiles for a distribution metric. Defaults to false. Can only be applied to metrics that have a `metric_type` of distribution.","description_kind":"plain","optional":true},"metric_name":{"type":"string","description":"The metric name for this resource.","description_kind":"plain","required":true},"metric_type":{"type":"string","description":"The metric's type. This field can't be updated after creation. Valid values are `gauge`, `count`, `rate`, `distribution`.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tag keys that will be queryable for your metric.","description_kind":"plain","required":true}},"block_types":{"aggregations":{"nesting_mode":"set","block":{"attributes":{"space":{"type":"string","description":"A space aggregation for use in query. Valid values are `avg`, `max`, `min`, `sum`.","description_kind":"plain","required":true},"time":{"type":"string","description":"A time aggregation for use in query. Valid values are `avg`, `count`, `max`, `min`, `sum`.","description_kind":"plain","required":true}},"description":"A list of queryable aggregation combinations for a count, rate, or gauge metric. By default, count and rate metrics require the (time: sum, space: sum) aggregation and gauge metrics require the (time: avg, space: avg) aggregation. Can only be applied to metrics that have a `metric_type` of count, rate, or gauge.","description_kind":"plain"}}},"description":"Provides a Datadog metric tag configuration resource. This can be used to modify tag configurations for metrics.","description_kind":"plain"}},"datadog_monitor":{"version":0,"block":{"attributes":{"enable_logs_sample":{"type":"bool","description":"A boolean indicating whether or not to include a list of log values which triggered the alert. This is only used by log monitors. Defaults to `false`.","description_kind":"plain","optional":true},"enable_samples":{"type":"bool","description":"Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors.","description_kind":"plain","computed":true},"escalation_message":{"type":"string","description":"A message to include with a re-notification. Supports the `@username` notification allowed elsewhere.","description_kind":"plain","optional":true},"evaluation_delay":{"type":"number","description":"(Only applies to metric alert) Time (in seconds) to delay evaluation, as a non-negative integer.\n\nFor example, if the value is set to `300` (5min), the `timeframe` is set to `last_5m` and the time is 7:00, the monitor will evaluate data from 6:50 to 6:55. This is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor will always have data during evaluation.","description_kind":"plain","optional":true,"computed":true},"force_delete":{"type":"bool","description":"A boolean indicating whether this monitor can be deleted even if it’s referenced by other resources (e.g. SLO, composite monitor).","description_kind":"plain","optional":true},"group_retention_duration":{"type":"string","description":"The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.","description_kind":"plain","optional":true},"groupby_simple_monitor":{"type":"bool","description":"Whether or not to trigger one alert if any source breaches a threshold. This is only used by log monitors. Defaults to `false`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_tags":{"type":"bool","description":"A boolean indicating whether notifications from this monitor automatically insert its triggering tags into the title. Defaults to `true`.","description_kind":"plain","optional":true},"locked":{"type":"bool","description":"A boolean indicating whether changes to this monitor should be restricted to the creator or admins. Defaults to `false`. **Deprecated.** Use `restricted_roles`.","description_kind":"plain","deprecated":true,"optional":true},"message":{"type":"string","description":"A message to include with notifications for this monitor.\n\nEmail notifications can be sent to specific users by using the same `@username` notation as events.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of Datadog monitor.","description_kind":"plain","required":true},"new_group_delay":{"type":"number","description":"The time (in seconds) to skip evaluations for new groups.\n\n`new_group_delay` overrides `new_host_delay` if it is set to a nonzero value.","description_kind":"plain","optional":true},"new_host_delay":{"type":"number","description":"**Deprecated**. See `new_group_delay`. Time (in seconds) to allow a host to boot and applications to fully start before starting the evaluation of monitor results. Should be a non-negative integer. This value is ignored for simple monitors and monitors not grouped by host. The only case when this should be used is to override the default and set `new_host_delay` to zero for monitors grouped by host. **Deprecated.** Use `new_group_delay` except when setting `new_host_delay` to zero. Defaults to `300`.","description_kind":"plain","deprecated":true,"optional":true},"no_data_timeframe":{"type":"number","description":"The number of minutes before a monitor will notify when data stops reporting.\n\nWe recommend at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks. Defaults to `10`.","description_kind":"plain","optional":true},"notification_preset_name":{"type":"string","description":"Toggles the display of additional content sent in the monitor notification. Valid values are `show_all`, `hide_query`, `hide_handles`, `hide_all`.","description_kind":"plain","optional":true},"notify_audit":{"type":"bool","description":"A boolean indicating whether tagged users will be notified on changes to this monitor. Defaults to `false`.","description_kind":"plain","optional":true},"notify_by":{"type":["set","string"],"description":"Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert.","description_kind":"plain","optional":true},"notify_no_data":{"type":"bool","description":"A boolean indicating whether this monitor will notify when data stops reporting. Defaults to `false`.","description_kind":"plain","optional":true},"on_missing_data":{"type":"string","description":"Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`.","description_kind":"plain","optional":true},"priority":{"type":"number","description":"Integer from 1 (high) to 5 (low) indicating alert severity.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The monitor query to notify on. Note this is not the same query you see in the UI and the syntax is different depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) for details. `terraform plan` will validate query contents unless `validate` is set to `false`.\n\n**Note:** APM latency data is now available as Distribution Metrics. Existing monitors have been migrated automatically but all terraformed monitors can still use the existing metrics. We strongly recommend updating monitor definitions to query the new metrics. To learn more, or to see examples of how to update your terraform definitions to utilize the new distribution metrics, see the [detailed doc](https://docs.datadoghq.com/tracing/guide/ddsketch_trace_metrics/).","description_kind":"plain","required":true},"renotify_interval":{"type":"number","description":"The number of minutes after the last notification before a monitor will re-notify on the current status. It will only re-notify if it's not resolved.","description_kind":"plain","optional":true},"renotify_occurrences":{"type":"number","description":"The number of re-notification messages that should be sent on the current status.","description_kind":"plain","optional":true},"renotify_statuses":{"type":["set","string"],"description":"The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`.","description_kind":"plain","optional":true},"require_full_window":{"type":"bool","description":"A boolean indicating whether this monitor needs a full window of data before it's evaluated. Datadog strongly recommends you set this to `false` for sparse metrics, otherwise some evaluations may be skipped. If there's a custom_schedule set, `require_full_window` must be false and will be ignored. Defaults to `true`.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"A list of unique role identifiers to define which roles are allowed to edit the monitor. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. Roles unique identifiers can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) in the `data.id` field.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to associate with your monitor. This can help you categorize and filter monitors in the manage monitors page of the UI. Note: it's not currently possible to filter by these tags when querying via the API","description_kind":"plain","optional":true},"timeout_h":{"type":"number","description":"The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the monitor. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). Note: The monitor type cannot be changed after a monitor is created. Valid values are `composite`, `event alert`, `log alert`, `metric alert`, `process alert`, `query alert`, `rum alert`, `service check`, `synthetics alert`, `trace-analytics alert`, `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring alert`.","description_kind":"plain","required":true},"validate":{"type":"bool","description":"If set to `false`, skip the validation call done during plan.","description_kind":"plain","optional":true}},"block_types":{"monitor_threshold_windows":{"nesting_mode":"list","block":{"attributes":{"recovery_window":{"type":"string","description":"Describes how long an anomalous metric must be normal before the alert recovers.","description_kind":"plain","optional":true},"trigger_window":{"type":"string","description":"Describes how long a metric must be anomalous before an alert triggers.","description_kind":"plain","optional":true}},"description":"A mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m` . Can only be used for, and are required for, anomaly monitors.","description_kind":"plain"},"max_items":1},"monitor_thresholds":{"nesting_mode":"list","block":{"attributes":{"critical":{"type":"string","description":"The monitor `CRITICAL` threshold. Must be a number.","description_kind":"plain","optional":true},"critical_recovery":{"type":"string","description":"The monitor `CRITICAL` recovery threshold. Must be a number.","description_kind":"plain","optional":true},"ok":{"type":"string","description":"The monitor `OK` threshold. Only supported in monitor type `service check`. Must be a number.","description_kind":"plain","optional":true},"unknown":{"type":"string","description":"The monitor `UNKNOWN` threshold. Only supported in monitor type `service check`. Must be a number.","description_kind":"plain","optional":true},"warning":{"type":"string","description":"The monitor `WARNING` threshold. Must be a number.","description_kind":"plain","optional":true},"warning_recovery":{"type":"string","description":"The monitor `WARNING` recovery threshold. Must be a number.","description_kind":"plain","optional":true}},"description":"Alert thresholds of the monitor.","description_kind":"plain"},"max_items":1},"scheduling_options":{"nesting_mode":"list","block":{"block_types":{"custom_schedule":{"nesting_mode":"list","block":{"block_types":{"recurrence":{"nesting_mode":"list","block":{"attributes":{"rrule":{"type":"string","description":"Must be a valid `rrule`. See API docs for supported fields","description_kind":"plain","required":true},"start":{"type":"string","description":"Time to start recurrence cycle. Similar to DTSTART. Expected format 'YYYY-MM-DDThh:mm:ss'","description_kind":"plain","optional":true},"timezone":{"type":"string","description":"'tz database' format. Example: `America/New_York` or `UTC`","description_kind":"plain","required":true}},"description":"A list of recurrence definitions. Length must be 1.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Configuration options for the custom schedules. If `start` is omitted, the monitor creation time will be used.","description_kind":"plain"}},"evaluation_window":{"nesting_mode":"list","block":{"attributes":{"day_starts":{"type":"string","description":"The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in `HH:mm` format.","description_kind":"plain","optional":true},"hour_starts":{"type":"number","description":"The minute of the hour at which a one hour cumulative evaluation window starts. Must be between 0 and 59.","description_kind":"plain","optional":true},"month_starts":{"type":"number","description":"The day of the month at which a one month cumulative evaluation window starts. Must be a value of 1.","description_kind":"plain","optional":true}},"description":"Configuration options for the evaluation window. If `hour_starts` is set, no other fields may be set. Otherwise, `day_starts` and `month_starts` must be set together.","description_kind":"plain"}}},"description":"Configuration options for scheduling.","description_kind":"plain"}},"variables":{"nesting_mode":"list","block":{"block_types":{"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog monitor resource. This can be used to create and manage Datadog monitors.","description_kind":"plain"}},"datadog_monitor_config_policy":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_type":{"type":"string","description":"The monitor config policy type Valid values are `tag`.","description_kind":"plain","required":true}},"block_types":{"tag_policy":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description":"The key of the tag","description_kind":"plain","required":true},"tag_key_required":{"type":"bool","description":"If a tag key is required for monitor creation","description_kind":"plain","required":true},"valid_tag_values":{"type":["list","string"],"description":"Valid values for the tag","description_kind":"plain","required":true}},"description":"Config for a tag policy. Only set if `policy_type` is `tag`.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog monitor config policy resource. This can be used to create and manage Datadog monitor config policies.","description_kind":"plain"}},"datadog_monitor_json":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor":{"type":"string","description":"The JSON formatted definition of the monitor.","description_kind":"plain","required":true},"url":{"type":"string","description":"The URL of the monitor.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog monitor JSON resource. This can be used to create and manage Datadog monitors using the JSON definition.","description_kind":"plain"}},"datadog_openapi_api":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"spec":{"type":"string","description":"The OpenAPI spec.","description_kind":"plain","required":true}},"description":"Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api.","description_kind":"plain"}},"datadog_organization_settings":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the organization.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name for Organization.","description_kind":"plain","optional":true},"public_id":{"type":"string","description":"The `public_id` of the organization you are operating within.","description_kind":"plain","computed":true}},"block_types":{"settings":{"nesting_mode":"list","block":{"attributes":{"private_widget_share":{"type":"bool","description":"Whether or not the organization users can share widgets outside of Datadog. Defaults to `false`.","description_kind":"plain","optional":true},"saml_autocreate_access_role":{"type":"string","description":"The access role of the user. Options are `st` (standard user), `adm` (admin user), or `ro` (read-only user). Allowed enum values: `st`, `adm` , `ro`, `ERROR` Defaults to `\"st\"`.","description_kind":"plain","optional":true},"saml_can_be_enabled":{"type":"bool","description":"Whether or not SAML can be enabled for this organization.","description_kind":"plain","computed":true},"saml_idp_endpoint":{"type":"string","description":"Identity provider endpoint for SAML authentication.","description_kind":"plain","computed":true},"saml_idp_metadata_uploaded":{"type":"bool","description":"Whether or not a SAML identity provider metadata file was provided to the Datadog organization.","description_kind":"plain","computed":true},"saml_login_url":{"type":"string","description":"URL for SAML logging.","description_kind":"plain","computed":true}},"block_types":{"saml":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether or not SAML is enabled for this organization. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"SAML properties","description_kind":"plain"},"min_items":1,"max_items":1},"saml_autocreate_users_domains":{"nesting_mode":"list","block":{"attributes":{"domains":{"type":["list","string"],"description":"List of domains where the SAML automated user creation is enabled.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Whether or not the automated user creation based on SAML domain is enabled. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"List of domains where the SAML automated user creation is enabled.","description_kind":"plain"},"min_items":1,"max_items":1},"saml_idp_initiated_login":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether or not a SAML identity provider metadata file was provided to the Datadog organization. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Whether or not a SAML identity provider metadata file was provided to the Datadog organization.","description_kind":"plain"},"min_items":1,"max_items":1},"saml_strict_mode":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Organization settings","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog Organization resource. This can be used to manage your Datadog organization's settings.","description_kind":"plain"}},"datadog_powerpack":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"The description of the powerpack.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name for the powerpack.","description_kind":"plain","optional":true},"show_title":{"type":"bool","description":"Whether or not title should be displayed in the powerpack.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"List of tags to identify this powerpack.","description_kind":"plain","optional":true}},"block_types":{"layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","optional":true,"computed":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","optional":true,"computed":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Should be greater than or equal to 0.","description_kind":"plain","optional":true,"computed":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Should be greater than or equal to 0.","description_kind":"plain","optional":true,"computed":true}},"description":"The layout of the powerpack on a free-form dashboard.","description_kind":"plain"},"max_items":1},"template_variables":{"nesting_mode":"list","block":{"attributes":{"defaults":{"type":["list","string"],"description":"One or many default values for powerpack template variables on load. If more than one default is specified, they will be unioned together with `OR`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the powerpack template variable.","description_kind":"plain","required":true}},"description":"The list of template variables for this powerpack.","description_kind":"plain"}},"widget":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"number","description":"The ID of the widget.","description_kind":"plain","computed":true}},"block_types":{"alert_graph_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"viz_type":{"type":"string","description":"Type of visualization to use when displaying the widget. Valid values are `timeseries`, `toplist`.","description_kind":"plain","required":true}},"description":"The definition for a Alert Graph widget.","description_kind":"plain"},"max_items":1},"alert_value_definition":{"nesting_mode":"list","block":{"attributes":{"alert_id":{"type":"string","description":"The ID of the monitor used by the widget.","description_kind":"plain","required":true},"precision":{"type":"number","description":"The precision to use when displaying the value. Use `*` for maximum precision.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true}},"description":"The definition for a Alert Value widget.","description_kind":"plain"},"max_items":1},"change_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"change_type":{"type":"string","description":"Whether to show absolute or relative change. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true},"compare_to":{"type":"string","description":"Choose from when to compare current data to. Valid values are `hour_before`, `day_before`, `week_before`, `month_before`.","description_kind":"plain","optional":true},"increase_good":{"type":"bool","description":"A Boolean indicating whether an increase in the value is good (displayed in green) or not (displayed in red).","description_kind":"plain","optional":true},"order_by":{"type":"string","description":"What to order by. Valid values are `change`, `name`, `present`, `past`.","description_kind":"plain","optional":true},"order_dir":{"type":"string","description":"Widget sorting method. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true},"show_present":{"type":"bool","description":"If set to `true`, displays the current value.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Change widget.","description_kind":"plain"},"max_items":1},"check_status_definition":{"nesting_mode":"list","block":{"attributes":{"check":{"type":"string","description":"The check to use in the widget.","description_kind":"plain","required":true},"group":{"type":"string","description":"The check group to use in the widget.","description_kind":"plain","optional":true},"group_by":{"type":["list","string"],"description":"When `grouping = \"cluster\"`, indicates a list of tags to use for grouping.","description_kind":"plain","optional":true},"grouping":{"type":"string","description":"The kind of grouping to use. Valid values are `check`, `cluster`.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to use in the widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Check Status widget.","description_kind":"plain"},"max_items":1},"distribution_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"The definition for a Distribution widget.","description_kind":"plain"},"max_items":1},"event_stream_definition":{"nesting_mode":"list","block":{"attributes":{"event_size":{"type":"string","description":"The size to use to display an event. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Stream widget.","description_kind":"plain"},"max_items":1},"event_timeline_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters, options: `and` or `or`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Event Timeline widget.","description_kind":"plain"},"max_items":1},"free_text_definition":{"nesting_mode":"list","block":{"attributes":{"color":{"type":"string","description":"The color of the text in the widget.","description_kind":"plain","optional":true},"font_size":{"type":"string","description":"The size of the text in the widget.","description_kind":"plain","optional":true},"text":{"type":"string","description":"The text to display in the widget.","description_kind":"plain","required":true},"text_align":{"type":"string","description":"The alignment of the text in the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true}},"description":"The definition for a Free Text widget.","description_kind":"plain"},"max_items":1},"geomap_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette to apply to the widget.","description_kind":"plain","required":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","required":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"focus":{"type":"string","description":"The two-letter ISO code of a country to focus the map on (or `WORLD`).","description_kind":"plain","required":true}},"description":"The view of the world that the map should render.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for a Geomap widget.","description_kind":"plain"},"max_items":1},"heatmap_definition":{"nesting_mode":"list","block":{"attributes":{"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Heatmap widget.","description_kind":"plain"},"max_items":1},"hostmap_definition":{"nesting_mode":"list","block":{"attributes":{"group":{"type":["list","string"],"description":"The list of tags to group nodes by.","description_kind":"plain","optional":true},"no_group_hosts":{"type":"bool","description":"A Boolean indicating whether to show ungrouped nodes.","description_kind":"plain","optional":true},"no_metric_hosts":{"type":"bool","description":"A Boolean indicating whether to show nodes with no metrics.","description_kind":"plain","optional":true},"node_type":{"type":"string","description":"The type of node used. Valid values are `host`, `container`.","description_kind":"plain","optional":true},"scope":{"type":["list","string"],"description":"The list of tags to filter nodes by.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"fill":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to fill the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}},"size":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used to size the map. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the request block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"fill_max":{"type":"string","description":"The max value to use to color the map.","description_kind":"plain","optional":true},"fill_min":{"type":"string","description":"The min value to use to color the map.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true},"palette_flip":{"type":"bool","description":"A Boolean indicating whether to flip the palette tones.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. One nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Hostmap widget.","description_kind":"plain"},"max_items":1},"iframe_definition":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true}},"description":"The definition for an Iframe widget.","description_kind":"plain"},"max_items":1},"image_definition":{"nesting_mode":"list","block":{"attributes":{"has_background":{"type":"bool","description":"Whether to display a background or not. Defaults to `true`.","description_kind":"plain","optional":true},"has_border":{"type":"bool","description":"Whether to display a border or not. Defaults to `true`.","description_kind":"plain","optional":true},"horizontal_align":{"type":"string","description":"The horizontal alignment for the widget. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"margin":{"type":"string","description":"The margins to use around the image. Note: `small` and `large` values are deprecated. Valid values are `sm`, `md`, `lg`, `small`, `large`.","description_kind":"plain","optional":true},"sizing":{"type":"string","description":"The preferred method to adapt the dimensions of the image. The values are based on the image `object-fit` CSS properties. Note: `zoom`, `fit` and `center` values are deprecated. Valid values are `fill`, `contain`, `cover`, `none`, `scale-down`, `zoom`, `fit`, `center`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to use as a data source for the widget.","description_kind":"plain","required":true},"url_dark_theme":{"type":"string","description":"The URL in dark mode to use as a data source for the widget.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for an Image widget","description_kind":"plain"},"max_items":1},"list_stream_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"response_format":{"type":"string","description":"Widget response format. Valid values are `event_list`.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Widget column field.","description_kind":"plain","required":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","required":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"Source from which to query items to display in the stream. Valid values are `logs_stream`, `audit_stream`, `ci_pipeline_stream`, `ci_test_stream`, `rum_issue_stream`, `apm_issue_stream`, `trace_stream`, `logs_issue_stream`, `logs_pattern_stream`, `logs_transaction_stream`, `event_stream`.","description_kind":"plain","required":true},"event_size":{"type":"string","description":"Size of events displayed in widget. Required if `data_source` is `event_stream`. Valid values are `s`, `l`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"List of indexes.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","optional":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated list stream widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Nested block describing the requests to use when displaying the widget. Multiple `request` blocks are allowed with the structure below.","description_kind":"plain"},"min_items":1}},"description":"The definition for a List Stream widget.","description_kind":"plain"},"max_items":1},"log_stream_definition":{"nesting_mode":"list","block":{"attributes":{"columns":{"type":["list","string"],"description":"Stringified list of columns to use, for example: `[\"column1\",\"column2\",\"column3\"]`.","description_kind":"plain","optional":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"message_display":{"type":"string","description":"The number of log lines to display. Valid values are `inline`, `expanded-md`, `expanded-lg`.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","optional":true},"show_date_column":{"type":"bool","description":"If the date column should be displayed.","description_kind":"plain","optional":true},"show_message_column":{"type":"bool","description":"If the message column should be displayed.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"time\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"The definition for an Log Stream widget.","description_kind":"plain"},"max_items":1},"manage_status_definition":{"nesting_mode":"list","block":{"attributes":{"color_preference":{"type":"string","description":"Whether to colorize text or background. Valid values are `background`, `text`.","description_kind":"plain","optional":true},"display_format":{"type":"string","description":"The display setting to use. Valid values are `counts`, `countsAndList`, `list`.","description_kind":"plain","optional":true},"hide_zero_counts":{"type":"bool","description":"A Boolean indicating whether to hide empty categories.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query to use in the widget.","description_kind":"plain","required":true},"show_last_triggered":{"type":"bool","description":"A Boolean indicating whether to show when monitors/groups last triggered.","description_kind":"plain","optional":true},"show_priority":{"type":"bool","description":"Whether to show the priorities column.","description_kind":"plain","optional":true},"sort":{"type":"string","description":"The method to sort the monitors. Valid values are `name`, `group`, `status`, `tags`, `triggered`, `group,asc`, `group,desc`, `name,asc`, `name,desc`, `status,asc`, `status,desc`, `tags,asc`, `tags,desc`, `triggered,asc`, `triggered,desc`, `priority,asc`, `priority,desc`.","description_kind":"plain","optional":true},"summary_type":{"type":"string","description":"The summary type to use. Valid values are `monitors`, `groups`, `combined`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for an Manage Status widget.","description_kind":"plain"},"max_items":1},"note_definition":{"nesting_mode":"list","block":{"attributes":{"background_color":{"type":"string","description":"The background color of the note.","description_kind":"plain","optional":true},"content":{"type":"string","description":"The content of the note.","description_kind":"plain","required":true},"font_size":{"type":"string","description":"The size of the text.","description_kind":"plain","optional":true},"has_padding":{"type":"bool","description":"Whether to add padding or not. Defaults to `true`.","description_kind":"plain","optional":true},"show_tick":{"type":"bool","description":"Whether to show a tick or not.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"tick_edge":{"type":"string","description":"When `tick = true`, a string indicating on which side of the widget the tick should be displayed. Valid values are `bottom`, `left`, `right`, `top`.","description_kind":"plain","optional":true},"tick_pos":{"type":"string","description":"When `tick = true`, a string with a percent sign indicating the position of the tick, for example: `tick_pos = \"50%\"` is centered alignment.","description_kind":"plain","optional":true},"vertical_align":{"type":"string","description":"The vertical alignment for the widget. Valid values are `center`, `top`, `bottom`.","description_kind":"plain","optional":true}},"description":"The definition for a Note widget.","description_kind":"plain"},"max_items":1},"query_table_definition":{"nesting_mode":"list","block":{"attributes":{"has_search_bar":{"type":"string","description":"Controls the display of the search bar. Valid values are `always`, `never`, `auto`.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"alias":{"type":"string","description":"The alias for the column name (defaults to metric name).","description_kind":"plain","optional":true},"cell_display_mode":{"type":["list","string"],"description":"A list of display modes for each table cell. List items one of `number`, `bar`. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of lines to show in the table.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The sort order for the rows. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"apm_stats_query":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The operation name associated with the service.","description_kind":"plain","required":true},"primary_tag":{"type":"string","description":"The organization's host group name and value.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The resource name.","description_kind":"plain","optional":true},"row_type":{"type":"string","description":"The level of detail for the request. Valid values are `service`, `resource`, `span`.","description_kind":"plain","required":true},"service":{"type":"string","description":"The service name.","description_kind":"plain","required":true}},"block_types":{"columns":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"A user-assigned alias for the column.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The column name.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"Column properties used by the front end for display.","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Query Table widget.","description_kind":"plain"},"max_items":1},"query_value_definition":{"nesting_mode":"list","block":{"attributes":{"autoscale":{"type":"bool","description":"A Boolean indicating whether to automatically scale the tile.","description_kind":"plain","optional":true},"custom_unit":{"type":"string","description":"The unit for the value displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"precision":{"type":"number","description":"The precision to use when displaying the tile.","description_kind":"plain","optional":true},"text_align":{"type":"string","description":"The alignment of the widget's text. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregator to use for time aggregation. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"timeseries_background":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Whether the Timeseries is made using an area or bars. Valid values are `bars`, `area`.","description_kind":"plain","required":true}},"block_types":{"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"Set a timeseries on the widget background.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Query Value widget.","description_kind":"plain"},"max_items":1},"run_workflow_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"workflow_id":{"type":"string","description":"Workflow ID","description_kind":"plain","required":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"input":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the workflow input.","description_kind":"plain","required":true},"value":{"type":"string","description":"Dashboard template variable. Can be suffixed with `.value` or `.key`.","description_kind":"plain","required":true}},"description":"Array of workflow inputs to map to dashboard template variables.","description_kind":"plain"}}},"description":"The definition for a Run Workflow widget.","description_kind":"plain"},"max_items":1},"scatterplot_definition":{"nesting_mode":"list","block":{"attributes":{"color_by_groups":{"type":["list","string"],"description":"List of groups used for colors.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"block_types":{"scatterplot_table":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"dimension":{"type":"string","description":"Dimension of the Scatterplot. Valid values are `x`, `y`, `radius`, `color`.","description_kind":"plain","required":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Scatterplot request containing formulas and functions.","description_kind":"plain"}},"x":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the X-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}},"y":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"Aggregator used for the request. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1}},"description":"The query used for the Y-Axis. Exactly one nested block is allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query`, `apm_stats_query` or `process_query` is required within the block).","description_kind":"plain"}}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"xaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the X-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Scatterplot widget.","description_kind":"plain"},"max_items":1},"service_level_objective_definition":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"global_time_target":{"type":"string","description":"The global time target of the widget.","description_kind":"plain","optional":true},"show_error_budget":{"type":"bool","description":"Whether to show the error budget or not.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"The ID of the service level objective used by the widget.","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description":"A list of time windows to display in the widget. Valid values are `7d`, `30d`, `90d`, `week_to_date`, `previous_week`, `month_to_date`, `previous_month`, `global_time`.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true},"view_mode":{"type":"string","description":"The view mode for the widget. Valid values are `overall`, `component`, `both`.","description_kind":"plain","required":true},"view_type":{"type":"string","description":"The type of view to use when displaying the widget. Only `detail` is supported.","description_kind":"plain","required":true}},"description":"The definition for a Service Level Objective widget.","description_kind":"plain"},"max_items":1},"servicemap_definition":{"nesting_mode":"list","block":{"attributes":{"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The definition for a Service Map widget.","description_kind":"plain"},"max_items":1},"slo_list_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the SLO List request. Valid values are `slo_list`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"limit":{"type":"number","description":"Maximum number of results to display in the table. Defaults to `100`.","description_kind":"plain","optional":true},"query_string":{"type":"string","description":"Widget query.","description_kind":"plain","required":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The facet path for the column.","description_kind":"plain","required":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"The facet and order to sort the data, for example: `{\"column\": \"status.sli\", \"order\": \"desc\"}`.","description_kind":"plain"},"max_items":1}},"description":"Updated SLO List widget.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Exactly one `request` block is allowed.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The definition for an SLO (Service Level Objective) List widget.","description_kind":"plain"},"max_items":1},"sunburst_definition":{"nesting_mode":"list","block":{"attributes":{"hide_total":{"type":"bool","description":"Whether or not to show the total value in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. One of `left`, `center`, or `right`. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title. Default is 16.","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"Nested block describing a custom link. Multiple `custom_link` blocks are allowed with the structure below.","description_kind":"plain"}},"legend_inline":{"nesting_mode":"list","block":{"attributes":{"hide_percent":{"type":"bool","description":"Whether to hide the percentages of the groups.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Whether to hide the values of the groups.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of legend (inline or automatic). Valid values are `inline`, `automatic`.","description_kind":"plain","required":true}},"description":"Used to configure the inline legend. Cannot be used in conjunction with legend_table.","description_kind":"plain"},"max_items":1},"legend_table":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The type of legend (table or none). Valid values are `table`, `none`.","description_kind":"plain","required":true}},"description":"Used to configure the table legend. Cannot be used in conjunction with legend_inline.","description_kind":"plain"},"max_items":1},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define style for the widget's request.","description_kind":"plain"},"max_items":1}},"description":"Nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed with the structure below (exactly one of `q`, `log_query` or `rum_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Sunburst widget.","description_kind":"plain"},"max_items":1},"timeseries_definition":{"nesting_mode":"list","block":{"attributes":{"legend_columns":{"type":["set","string"],"description":"A list of columns to display in the legend. Valid values are `value`, `avg`, `sum`, `min`, `max`.","description_kind":"plain","optional":true},"legend_layout":{"type":"string","description":"The layout of the legend displayed in the widget. Valid values are `auto`, `horizontal`, `vertical`.","description_kind":"plain","optional":true},"legend_size":{"type":"string","description":"The size of the legend displayed in the widget.","description_kind":"plain","optional":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"show_legend":{"type":"bool","description":"Whether or not to show the legend on this widget.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"event":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The event query to use in the widget.","description_kind":"plain","required":true},"tags_execution":{"type":"string","description":"The execution method for multi-value filters.","description_kind":"plain","optional":true}},"description":"The definition of the event to overlay on the graph. Multiple `event` blocks are allowed using the structure below.","description_kind":"plain"}},"marker":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How the marker lines are displayed, options are one of {`error`, `warning`, `info`, `ok`} combined with one of {`dashed`, `solid`, `bold`}. Example: `error dashed`.","description_kind":"plain","optional":true},"label":{"type":"string","description":"A label for the line or range.","description_kind":"plain","optional":true},"value":{"type":"string","description":"A mathematical expression describing the marker, for example: `y \u003e 1`, `-5 \u003c y \u003c 0`, `y = 19`.","description_kind":"plain","required":true}},"description":"A nested block describing the marker to use when displaying the widget. The structure of this block is described below. Multiple `marker` blocks are allowed within a given `tile_def` block.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"display_type":{"type":"string","description":"How to display the marker lines. Valid values are `area`, `bars`, `line`, `overlay`.","description_kind":"plain","optional":true},"on_right_yaxis":{"type":"bool","description":"A Boolean indicating whether the request uses the right or left Y-Axis.","description_kind":"plain","optional":true},"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"metadata":{"nesting_mode":"list","block":{"attributes":{"alias_name":{"type":"string","description":"The expression alias.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"The expression name.","description_kind":"plain","required":true}},"description":"Used to define expression aliases. Multiple `metadata` blocks are allowed using the structure below.","description_kind":"plain"}},"network_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"line_type":{"type":"string","description":"The type of lines displayed. Valid values are `dashed`, `dotted`, `solid`.","description_kind":"plain","optional":true},"line_width":{"type":"string","description":"The width of line displayed. Valid values are `normal`, `thick`, `thin`.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"The style of the widget graph. Exactly one `style` block is allowed using the structure below.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `network_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}},"right_yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the right Y-Axis Controls. See the `on_right_yaxis` property for which request will use this axis. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"yaxis":{"nesting_mode":"list","block":{"attributes":{"include_zero":{"type":"bool","description":"Always include zero or fit the axis to the data range.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label of the axis to display on the graph.","description_kind":"plain","optional":true},"max":{"type":"string","description":"Specify the maximum value to show on the Y-axis.","description_kind":"plain","optional":true},"min":{"type":"string","description":"Specify the minimum value to show on the Y-axis.","description_kind":"plain","optional":true},"scale":{"type":"string","description":"Specify the scale type, options: `linear`, `log`, `pow`, `sqrt`.","description_kind":"plain","optional":true}},"description":"A nested block describing the Y-Axis Controls. The structure of this block is described below.","description_kind":"plain"},"max_items":1}},"description":"The definition for a Timeseries widget.","description_kind":"plain"},"max_items":1},"toplist_definition":{"nesting_mode":"list","block":{"attributes":{"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"q":{"type":"string","description":"The metric query to use for this widget.","description_kind":"plain","optional":true}},"block_types":{"apm_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"audit_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background, depending on a rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"log_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"filter_by":{"type":["list","string"],"description":"A list of processes.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The max number of items in the filter list.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"Your chosen metric.","description_kind":"plain","required":true},"search_by":{"type":"string","description":"Your chosen search term.","description_kind":"plain","optional":true}},"description":"The process query to use in the widget. The structure of this block is described below.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"rum_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"security_query":{"nesting_mode":"list","block":{"attributes":{"index":{"type":"string","description":"The name of the index to query.","description_kind":"plain","required":true},"search_query":{"type":"string","description":"The search query to use.","description_kind":"plain","optional":true}},"block_types":{"compute_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. The map keys are listed below.","description_kind":"plain"},"max_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The maximum number of items in the group.","description_kind":"plain","optional":true}},"block_types":{"sort_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Widget sorting methods. Valid values are `asc`, `desc`.","description_kind":"plain","required":true}},"description":"A list of exactly one element describing the sort query to use.","description_kind":"plain"},"max_items":1}},"description":"Multiple `group_by` blocks are allowed using the structure below.","description_kind":"plain"}},"multi_compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation method.","description_kind":"plain","required":true},"facet":{"type":"string","description":"The facet name.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Define the time interval in seconds.","description_kind":"plain","optional":true}},"description":"`compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed using the structure below.","description_kind":"plain"}}},"description":"The query to use for this widget.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"A color palette to apply to the widget. The available options are available at: https://docs.datadoghq.com/dashboards/widgets/timeseries/#appearance.","description_kind":"plain","optional":true}},"description":"Define request for the widget's style.","description_kind":"plain"},"max_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple `request` blocks are allowed using the structure below (exactly one of `q`, `apm_query`, `log_query`, `rum_query`, `security_query` or `process_query` is required within the `request` block).","description_kind":"plain"}}},"description":"The definition for a Toplist widget.","description_kind":"plain"},"max_items":1},"topology_map_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"block_types":{"custom_link":{"nesting_mode":"list","block":{"attributes":{"is_hidden":{"type":"bool","description":"The flag for toggling context menu link visibility.","description_kind":"plain","optional":true},"label":{"type":"string","description":"The label for the custom link URL.","description_kind":"plain","optional":true},"link":{"type":"string","description":"The URL of the custom link.","description_kind":"plain","optional":true},"override_label":{"type":"string","description":"The label ID that refers to a context menu link item. When `override_label` is provided, the client request omits the label field.","description_kind":"plain","optional":true}},"description":"A nested block describing a custom link. Multiple `custom_link` blocks are allowed using the structure below.","description_kind":"plain"}},"request":{"nesting_mode":"list","block":{"attributes":{"request_type":{"type":"string","description":"The request type for the Topology request ('topology'). Valid values are `topology`.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for the Topology request ('service_map' or 'data_streams'). Valid values are `data_streams`, `service_map`.","description_kind":"plain","required":true},"filters":{"type":["list","string"],"description":"Your environment and primary tag (or `*` if enabled for your account).","description_kind":"plain","required":true},"service":{"type":"string","description":"The ID of the service to map.","description_kind":"plain","required":true}},"description":"The query for a Topology request.","description_kind":"plain"},"min_items":1}},"description":"A nested block describing the request to use when displaying the widget. Multiple request blocks are allowed using the structure below (`query` and `request_type` are required within the request).","description_kind":"plain"}}},"description":"The definition for a Topology Map widget.","description_kind":"plain"},"max_items":1},"trace_service_definition":{"nesting_mode":"list","block":{"attributes":{"display_format":{"type":"string","description":"The number of columns to display. Valid values are `one_column`, `two_column`, `three_column`.","description_kind":"plain","optional":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"live_span":{"type":"string","description":"The timeframe to use when displaying the widget. Valid values are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, `1y`, `alert`.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"show_breakdown":{"type":"bool","description":"Whether to show the latency breakdown or not.","description_kind":"plain","optional":true},"show_distribution":{"type":"bool","description":"Whether to show the latency distribution or not.","description_kind":"plain","optional":true},"show_errors":{"type":"bool","description":"Whether to show the error metrics or not.","description_kind":"plain","optional":true},"show_hits":{"type":"bool","description":"Whether to show the hits metrics or not","description_kind":"plain","optional":true},"show_latency":{"type":"bool","description":"Whether to show the latency metrics or not.","description_kind":"plain","optional":true},"show_resource_list":{"type":"bool","description":"Whether to show the resource list or not.","description_kind":"plain","optional":true},"size_format":{"type":"string","description":"The size of the widget. Valid values are `small`, `medium`, `large`.","description_kind":"plain","optional":true},"span_name":{"type":"string","description":"APM span name","description_kind":"plain","required":true},"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true},"title_align":{"type":"string","description":"The alignment of the widget's title. Valid values are `center`, `left`, `right`.","description_kind":"plain","optional":true},"title_size":{"type":"string","description":"The size of the widget's title (defaults to 16).","description_kind":"plain","optional":true}},"description":"The definition for a Trace Service widget.","description_kind":"plain"},"max_items":1},"treemap_definition":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"The title of the widget.","description_kind":"plain","optional":true}},"block_types":{"request":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"alias":{"type":"string","description":"An expression alias.","description_kind":"plain","optional":true},"cell_display_mode":{"type":"string","description":"A list of display modes for each table cell. Valid values are `number`, `bar`.","description_kind":"plain","optional":true},"formula_expression":{"type":"string","description":"A string expression built from queries, formulas, and functions.","description_kind":"plain","required":true}},"block_types":{"conditional_formats":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator to use. Valid values are `=`, `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"custom_bg_color":{"type":"string","description":"The color palette to apply to the background, same values available as palette.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The color palette to apply to the foreground, same values available as palette.","description_kind":"plain","optional":true},"hide_value":{"type":"bool","description":"Setting this to True hides values.","description_kind":"plain","optional":true},"image_url":{"type":"string","description":"Displays an image as the background.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The metric from the request to correlate with this conditional format.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `blue`, `custom_bg`, `custom_image`, `custom_text`, `gray_on_white`, `grey`, `green`, `orange`, `red`, `red_on_white`, `white_on_gray`, `white_on_green`, `green_on_white`, `white_on_red`, `white_on_yellow`, `yellow_on_white`, `black_on_light_yellow`, `black_on_light_green`, `black_on_light_red`.","description_kind":"plain","required":true},"timeframe":{"type":"string","description":"Defines the displayed timeframe.","description_kind":"plain","optional":true},"value":{"type":"number","description":"A value for the comparator.","description_kind":"plain","required":true}},"description":"Conditional formats allow you to set the color of your widget content or background depending on the rule applied to your data. Multiple `conditional_formats` blocks are allowed using the structure below.","description_kind":"plain"}},"limit":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of results to return.","description_kind":"plain","optional":true},"order":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true}},"description":"The options for limiting results returned.","description_kind":"plain"},"max_items":1},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors.","description_kind":"plain","optional":true},"palette_index":{"type":"number","description":"Index specifying which color to use within the palette.","description_kind":"plain","optional":true}},"description":"Styling options for widget formulas.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"query":{"nesting_mode":"list","block":{"block_types":{"apm_dependency_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Dependency Stats queries. Valid values are `apm_dependency_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"is_upstream":{"type":"bool","description":"Determines whether stats for upstream or downstream dependencies should be queried.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","required":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","required":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `avg_duration`, `avg_root_duration`, `avg_spans_per_trace`, `error_rate`, `pct_exec_time`, `pct_of_traces`, `total_traces_count`.","description_kind":"plain","required":true}},"description":"The APM Dependency Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"apm_resource_stats_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for APM Resource Stats queries. Valid values are `apm_resource_stats`.","description_kind":"plain","required":true},"env":{"type":"string","description":"APM environment.","description_kind":"plain","required":true},"group_by":{"type":["list","string"],"description":"Array of fields to group results by.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"operation_name":{"type":"string","description":"Name of operation on service.","description_kind":"plain","optional":true},"primary_tag_name":{"type":"string","description":"The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.","description_kind":"plain","optional":true},"primary_tag_value":{"type":"string","description":"Filter APM data by the second primary tag. `primary_tag_name` must also be specified.","description_kind":"plain","optional":true},"resource_name":{"type":"string","description":"APM resource.","description_kind":"plain","optional":true},"service":{"type":"string","description":"APM service.","description_kind":"plain","required":true},"stat":{"type":"string","description":"APM statistic. Valid values are `errors`, `error_rate`, `hits`, `latency_avg`, `latency_distribution`, `latency_max`, `latency_p50`, `latency_p75`, `latency_p90`, `latency_p95`, `latency_p99`.","description_kind":"plain","required":true}},"description":"The APM Resource Stats query using formulas and functions.","description_kind":"plain"},"max_items":1},"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `last`, `max`, `min`, `sum`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `cloud_cost`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The cloud cost query definition.","description_kind":"plain","required":true}},"description":"The Cloud Cost query using formulas and functions.","description_kind":"plain"},"max_items":1},"event_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for event platform-based queries. Valid values are `logs`, `spans`, `network`, `rum`, `security_signals`, `profiles`, `audit`, `events`, `ci_tests`, `ci_pipelines`.","description_kind":"plain","required":true},"indexes":{"type":["list","string"],"description":"An array of index names to query in the stream.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"storage":{"type":"string","description":"Storage location (private beta).","description_kind":"plain","optional":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"interval":{"type":"number","description":"A time interval in milliseconds.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The measurable attribute to compute.","description_kind":"plain","optional":true}},"description":"The compute options.","description_kind":"plain"},"min_items":1},"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"The event facet.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The number of groups to return.","description_kind":"plain","optional":true}},"block_types":{"sort":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation methods for the event platform queries. Valid values are `count`, `cardinality`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, `min`, `max`, `avg`.","description_kind":"plain","required":true},"metric":{"type":"string","description":"The metric used for sorting group by results.","description_kind":"plain","optional":true},"order":{"type":"string","description":"Direction of sort. Valid values are `asc`, `desc`.","description_kind":"plain","optional":true}},"description":"The options for sorting group by results.","description_kind":"plain"},"max_items":1}},"description":"Group by options.","description_kind":"plain"}},"search":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"The events search string.","description_kind":"plain","required":true}},"description":"The search options.","description_kind":"plain"},"max_items":1}},"description":"A timeseries formula and functions events query.","description_kind":"plain"},"max_items":1},"metric_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1},"process_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for metrics queries. Valid values are `avg`, `min`, `max`, `sum`, `last`, `area`, `l2norm`, `percentile`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for process queries. Valid values are `process`, `container`.","description_kind":"plain","required":true},"is_normalized_cpu":{"type":"bool","description":"Whether to normalize the CPU percentages.","description_kind":"plain","optional":true},"limit":{"type":"number","description":"The number of hits to return.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The process metric name.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","required":true},"sort":{"type":"string","description":"The direction of the sort. Valid values are `asc`, `desc`. Defaults to `\"desc\"`.","description_kind":"plain","optional":true},"tag_filters":{"type":["list","string"],"description":"An array of tags to filter by.","description_kind":"plain","optional":true},"text_filter":{"type":"string","description":"The text to use as a filter.","description_kind":"plain","optional":true}},"description":"The process query using formulas and functions.","description_kind":"plain"},"max_items":1},"slo_query":{"nesting_mode":"list","block":{"attributes":{"additional_query_filters":{"type":"string","description":"Additional filters applied to the SLO query.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for SLO queries. Valid values are `slo`.","description_kind":"plain","required":true},"group_mode":{"type":"string","description":"Group mode to query measures. Valid values are `overall`, `components`. Defaults to `\"overall\"`.","description_kind":"plain","optional":true},"measure":{"type":"string","description":"SLO measures queries. Valid values are `good_events`, `bad_events`, `slo_status`, `error_budget_remaining`, `burn_rate`, `error_budget_burndown`.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of query for use in formulas.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of an SLO to query.","description_kind":"plain","required":true},"slo_query_type":{"type":"string","description":"type of the SLO to query. Valid values are `metric`. Defaults to `\"metric\"`.","description_kind":"plain","optional":true}},"description":"The SLO query using formulas and functions.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description":"Nested block describing the request to use when displaying the widget.","description_kind":"plain"}}},"description":"The definition for a Treemap widget.","description_kind":"plain"},"max_items":1},"widget_layout":{"nesting_mode":"list","block":{"attributes":{"height":{"type":"number","description":"The height of the widget.","description_kind":"plain","required":true},"is_column_break":{"type":"bool","description":"Whether the widget should be the first one on the second column in high density or not. Only one widget in the dashboard should have this property set to `true`.","description_kind":"plain","optional":true},"width":{"type":"number","description":"The width of the widget.","description_kind":"plain","required":true},"x":{"type":"number","description":"The position of the widget on the x (horizontal) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true},"y":{"type":"number","description":"The position of the widget on the y (vertical) axis. Must be greater than or equal to 0.","description_kind":"plain","required":true}},"description":"The layout of the widget on a 'free' dashboard.","description_kind":"plain"},"max_items":1}},"description":"The list of widgets to display in the powerpack.","description_kind":"plain"}}},"description":"Provides a Datadog powerpack resource. This can be used to create and manage Datadog powerpacks.","description_kind":"plain"}},"datadog_restriction_policy":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"resource_id":{"type":"string","description":"Identifier for the resource, formatted as resource_type:resource_id.\n\nNote: Dashboards support is in private beta. Reach out to your Datadog contact or support to enable this.","description_kind":"plain","required":true}},"block_types":{"bindings":{"nesting_mode":"set","block":{"attributes":{"principals":{"type":["set","string"],"description":"An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role` and `org`. The org ID can be obtained through the api/v2/users API.","description_kind":"plain","required":true},"relation":{"type":"string","description":"The role/level of access. See this page for more details https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"Provides a Datadog RestrictionPolicy resource. This can be used to create and manage Datadog restriction policies.","description_kind":"plain"}},"datadog_role":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role.","description_kind":"plain","required":true},"user_count":{"type":"number","description":"Number of users that have this role.","description_kind":"plain","computed":true},"validate":{"type":"bool","description":"If set to `false`, skip the validation call done during plan.","description_kind":"plain","optional":true}},"block_types":{"permission":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description":"ID of the permission to assign.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the permission.","description_kind":"plain","computed":true}},"description":"Set of objects containing the permission ID and the name of the permissions granted to this role.","description_kind":"plain"}}},"description":"Provides a Datadog role resource. This can be used to create and manage Datadog roles.","description_kind":"plain"}},"datadog_rum_application":{"version":0,"block":{"attributes":{"client_token":{"type":"string","description":"The client token.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the RUM application.","description_kind":"plain","required":true},"type":{"type":"string","description":"Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`. Defaults to `\"browser\"`.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog RUM application resource. This can be used to create and manage Datadog RUM applications.","description_kind":"plain"}},"datadog_security_monitoring_default_rule":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Enable the rule. Defaults to `true`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"The rule type.","description_kind":"plain","computed":true}},"block_types":{"case":{"nesting_mode":"list","block":{"attributes":{"notifications":{"type":["list","string"],"description":"Notification targets for each rule case.","description_kind":"plain","required":true},"status":{"type":"string","description":"Status of the rule case to match. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true}},"description":"Cases of the rule, this is used to update notifications.","description_kind":"plain"},"max_items":10},"filter":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description":"The type of filtering action. Allowed enum values: require, suppress Valid values are `require`, `suppress`.","description_kind":"plain","required":true},"query":{"type":"string","description":"Query for selecting logs to apply the filtering action.","description_kind":"plain","required":true}},"description":"Additional queries to filter matched events before they are processed.","description_kind":"plain"}},"options":{"nesting_mode":"list","block":{"attributes":{"decrease_criticality_based_on_env":{"type":"bool","description":"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Options on default rules. Note that only a subset of fields can be updated on default rule options.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog Security Monitoring Rule API resource for default rules. It can only be imported, you can't create a default rule.","description_kind":"plain"}},"datadog_security_monitoring_filter":{"version":0,"block":{"attributes":{"filtered_data_type":{"type":"string","description":"The filtered data type. Valid values are `logs`. Defaults to `\"logs\"`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Whether the security filter is enabled.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the security filter.","description_kind":"plain","required":true},"query":{"type":"string","description":"The query of the security filter.","description_kind":"plain","required":true},"version":{"type":"number","description":"The version of the security filter.","description_kind":"plain","computed":true}},"block_types":{"exclusion_filter":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Exclusion filter name.","description_kind":"plain","required":true},"query":{"type":"string","description":"Exclusion filter query. Logs that match this query are excluded from the security filter.","description_kind":"plain","required":true}},"description":"Exclusion filters to exclude some logs from the security filter.","description_kind":"plain"}}},"description":"Provides a Datadog Security Monitoring Rule API resource for security filters.","description_kind":"plain"}},"datadog_security_monitoring_rule":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Whether the rule is enabled. Defaults to `true`.","description_kind":"plain","optional":true},"has_extended_title":{"type":"bool","description":"Whether the notifications include the triggering group-by values in their title. Defaults to `false`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"Message for generated signals.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the rule.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"Tags for generated signals.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The rule type. Valid values are `application_security`, `log_detection`, `workload_security`, `signal_correlation`. Defaults to `\"log_detection\"`.","description_kind":"plain","optional":true}},"block_types":{"case":{"nesting_mode":"list","block":{"attributes":{"condition":{"type":"string","description":"A rule case contains logical operations (`\u003e`,`\u003e=`, `\u0026\u0026`, `||`) to determine if a signal should be generated based on the event counts in the previously defined queries.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the case.","description_kind":"plain","optional":true},"notifications":{"type":["list","string"],"description":"Notification targets for each rule case.","description_kind":"plain","optional":true},"status":{"type":"string","description":"Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true}},"description":"Cases for generating signals.","description_kind":"plain"},"max_items":10},"filter":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description":"The type of filtering action. Valid values are `require`, `suppress`.","description_kind":"plain","required":true},"query":{"type":"string","description":"Query for selecting logs to apply the filtering action.","description_kind":"plain","required":true}},"description":"Additional queries to filter matched events before they are processed.","description_kind":"plain"}},"options":{"nesting_mode":"list","block":{"attributes":{"decrease_criticality_based_on_env":{"type":"bool","description":"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce noise. The decrement is applied when the environment tag of the signal starts with `staging`, `test`, or `dev`. Only available when the rule type is `log_detection`. Defaults to `false`.","description_kind":"plain","optional":true},"detection_method":{"type":"string","description":"The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`. Defaults to `\"threshold\"`.","description_kind":"plain","optional":true},"evaluation_window":{"type":"number","description":"A time window is specified to match when at least one of the cases matches true. This is a sliding window and evaluates in real time. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`.","description_kind":"plain","optional":true},"keep_alive":{"type":"number","description":"Once a signal is generated, the signal will remain “open” if a case is matched at least once within this keep alive window (in seconds). Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`.","description_kind":"plain","optional":true},"max_signal_duration":{"type":"number","description":"A signal will “close” regardless of the query being matched once the time exceeds the maximum duration (in seconds). This time is calculated from the first seen timestamp. Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`, `43200`, `86400`.","description_kind":"plain","optional":true}},"block_types":{"impossible_travel_options":{"nesting_mode":"list","block":{"attributes":{"baseline_user_locations":{"type":"bool","description":"If true, signals are suppressed for the first 24 hours. During that time, Datadog learns the user's regular access locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access. Defaults to `false`.","description_kind":"plain","optional":true}},"description":"Options for rules using the impossible travel detection method.","description_kind":"plain"},"max_items":1},"new_value_options":{"nesting_mode":"list","block":{"attributes":{"forget_after":{"type":"number","description":"The duration in days after which a learned value is forgotten. Valid values are `1`, `2`, `7`, `14`, `21`, `28`.","description_kind":"plain","required":true},"learning_duration":{"type":"number","description":"The duration in days during which values are learned, and after which signals will be generated for values that weren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. Valid values are `0`, `1`, `7`. Defaults to `1`.","description_kind":"plain","optional":true},"learning_method":{"type":"string","description":"The learning method used to determine when signals should be generated for values that weren't learned. Valid values are `duration`, `threshold`. Defaults to `\"duration\"`.","description_kind":"plain","optional":true},"learning_threshold":{"type":"number","description":"A number of occurrences after which signals are generated for values that weren't learned. Valid values are `0`, `1`. Defaults to `0`.","description_kind":"plain","optional":true}},"description":"New value rules specific options.","description_kind":"plain"},"max_items":1},"third_party_rule_options":{"nesting_mode":"list","block":{"attributes":{"default_notifications":{"type":["list","string"],"description":"Notification targets for the default rule case, when none of the third-party cases match.","description_kind":"plain","optional":true},"default_status":{"type":"string","description":"Severity of the default rule case, when none of the third-party cases match. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true},"signal_title_template":{"type":"string","description":"A template for the signal title; if omitted, the title is generated based on the case name.","description_kind":"plain","optional":true}},"block_types":{"root_query":{"nesting_mode":"list","block":{"attributes":{"group_by_fields":{"type":["list","string"],"description":"Fields to group by. If empty, each log triggers a signal.","description_kind":"plain","optional":true},"query":{"type":"string","description":"Query to filter logs.","description_kind":"plain","required":true}},"description":"Queries to be combined with third-party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.","description_kind":"plain"},"min_items":1,"max_items":10}},"description":"Options for rules using the third-party detection method.","description_kind":"plain"},"max_items":1}},"description":"Options on rules.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `\"count\"`.","description_kind":"plain","optional":true},"distinct_fields":{"type":["list","string"],"description":"Field for which the cardinality is measured. Sent as an array.","description_kind":"plain","optional":true},"group_by_fields":{"type":["list","string"],"description":"Fields to group by.","description_kind":"plain","optional":true},"metric":{"type":"string","description":"The target field to aggregate over when using the `sum`, `max`, or `geo_data` aggregations. **Deprecated.** Configure `metrics` instead. This attribute will be removed in the next major version of the provider.","description_kind":"plain","deprecated":true,"optional":true},"metrics":{"type":["list","string"],"description":"Group of target fields to aggregate over when using the `sum`, `max`, `geo_data`, or `new_value` aggregations. The `sum`, `max`, and `geo_data` aggregations only accept one value in this list, whereas the `new_value` aggregation accepts up to five values.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the query. Not compatible with `new_value` aggregations.","description_kind":"plain","optional":true},"query":{"type":"string","description":"Query to run on logs.","description_kind":"plain","required":true}},"block_types":{"agent_rule":{"nesting_mode":"list","block":{"attributes":{"agent_rule_id":{"type":"string","description":"**Deprecated**. It won't be applied anymore.","description_kind":"plain","required":true},"expression":{"type":"string","description":"**Deprecated**. It won't be applied anymore.","description_kind":"plain","required":true}},"description":"**Deprecated**. It won't be applied anymore. **Deprecated.** `agent_rule` has been deprecated in favor of new Agent Rule resource.","description_kind":"plain","deprecated":true}}},"description":"Queries for selecting logs which are part of the rule.","description_kind":"plain"}},"signal_query":{"nesting_mode":"list","block":{"attributes":{"aggregation":{"type":"string","description":"The aggregation type. For Signal Correlation rules, it must be event_count. Valid values are `count`, `cardinality`, `sum`, `max`, `new_value`, `geo_data`, `event_count`, `none`. Defaults to `\"event_count\"`.","description_kind":"plain","optional":true},"correlated_by_fields":{"type":["list","string"],"description":"Fields to correlate by.","description_kind":"plain","optional":true},"correlated_query_index":{"type":"string","description":"Index of the rule query used to retrieve the correlated field. An empty string applies correlation on the non-projected per query attributes of the rule. Defaults to `\"\"`.","description_kind":"plain","optional":true},"default_rule_id":{"type":"string","description":"Default Rule ID of the signal to correlate. This value is READ-ONLY.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the query. Not compatible with `new_value` aggregations.","description_kind":"plain","optional":true},"rule_id":{"type":"string","description":"Rule ID of the signal to correlate.","description_kind":"plain","required":true}},"description":"Queries for selecting logs which are part of the rule.","description_kind":"plain"}},"third_party_case":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the case.","description_kind":"plain","optional":true},"notifications":{"type":["list","string"],"description":"Notification targets for each rule case.","description_kind":"plain","optional":true},"query":{"type":"string","description":"A query to associate a third-party event to this case.","description_kind":"plain","optional":true},"status":{"type":"string","description":"Severity of the Security Signal. Valid values are `info`, `low`, `medium`, `high`, `critical`.","description_kind":"plain","required":true}},"description":"Cases for generating signals for third-party rules. Only required and accepted for third-party rules","description_kind":"plain"},"max_items":10}},"description":"Provides a Datadog Security Monitoring Rule API resource. This can be used to create and manage Datadog security monitoring rules. To change settings for a default rule use `datadog_security_default_rule` instead.","description_kind":"plain"}},"datadog_security_monitoring_suppression":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description for the suppression rule.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Whether the suppression rule is enabled.","description_kind":"plain","required":true},"expiration_date":{"type":"string","description":"A RFC3339 timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the suppression rule.","description_kind":"plain","required":true},"rule_query":{"type":"string","description":"The rule query of the suppression rule, with the same syntax as the search bar for detection rules.","description_kind":"plain","required":true},"suppression_query":{"type":"string","description":"The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. Same syntax as the queries to search signals in the signal explorer.","description_kind":"plain","required":true}},"description":"Provides a Datadog Security Monitoring Suppression API resource. It can be used to create and manage Datadog security monitoring suppression rules.","description_kind":"plain"}},"datadog_sensitive_data_scanner_group":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the Datadog scanning group.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Whether or not the scanning group is enabled. If the group doesn't contain any rule or if all the rules in it are disabled, the group is force-disabled by our backend","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the Datadog scanning group.","description_kind":"plain","required":true},"product_list":{"type":["set","string"],"description":"List of products the scanning group applies. Valid values are `logs`, `rum`, `events`, `apm`.","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Query to filter the events.","description_kind":"plain","required":true}},"description":"Filter object the scanning group applies.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Provides a Sensitive Data Scanner group resource.","description_kind":"plain"}},"datadog_sensitive_data_scanner_group_order":{"version":0,"block":{"attributes":{"group_ids":{"type":["list","string"],"description":"The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog Sensitive Data Scanner Group Order API resource. This can be used to manage the order of Datadog Sensitive Data Scanner Groups.","description_kind":"plain"}},"datadog_sensitive_data_scanner_rule":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the rule.","description_kind":"plain","optional":true},"excluded_namespaces":{"type":["list","string"],"description":"Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array.","description_kind":"plain","optional":true},"group_id":{"type":"string","description":"Id of the scanning group the rule belongs to.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Whether or not the rule is enabled.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the rule.","description_kind":"plain","optional":true},"namespaces":{"type":["list","string"],"description":"Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned. If both are missing the whole event is scanned.","description_kind":"plain","optional":true},"pattern":{"type":"string","description":"Not included if there is a relationship to a standard pattern.","description_kind":"plain","optional":true},"standard_pattern_id":{"type":"string","description":"Id of the standard pattern the rule refers to. If provided, then pattern must not be provided.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"List of tags.","description_kind":"plain","optional":true}},"block_types":{"included_keyword_configuration":{"nesting_mode":"list","block":{"attributes":{"character_count":{"type":"number","description":"Number of characters before the match to find a keyword validating the match. It must be between 1 and 50 (inclusive).","description_kind":"plain","required":true},"keywords":{"type":["list","string"],"description":"Keyword list that is checked during scanning in order to validate a match. The number of keywords in the list must be lower than or equal to 30.","description_kind":"plain","required":true}},"description":"Object defining a set of keywords and a number of characters that help reduce noise. You can provide a list of keywords you would like to check within a defined proximity of the matching pattern. If any of the keywords are found within the proximity check then the match is kept. If none are found, the match is discarded. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying this field to avoid unexpectedly disabling Sensitive Data Scanner groups.","description_kind":"plain"},"max_items":1},"text_replacement":{"nesting_mode":"list","block":{"attributes":{"number_of_chars":{"type":"number","description":"Required if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. It must be \u003e 0.","description_kind":"plain","optional":true},"replacement_string":{"type":"string","description":"Required if type == 'replacement_string'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of the replacement text. None means no replacement. hash means the data will be stubbed. replacement_string means that one can chose a text to replace the data. partial_replacement_from_beginning allows a user to partially replace the data from the beginning, and partial_replacement_from_end on the other hand, allows to replace data from the end. Valid values are `none`, `hash`, `replacement_string`, `partial_replacement_from_beginning`, `partial_replacement_from_end`.","description_kind":"plain","required":true}},"description":"Object describing how the scanned event will be replaced. Defaults to `type: none`","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog SensitiveDataScannerRule resource. This can be used to create and manage Datadog sensitive_data_scanner_rule. Setting the `create_before_destroy` lifecycle Meta-argument to `true` is highly recommended if modifying the `included_keyword_configuration` field to avoid unexpectedly disabling Sensitive Data Scanner groups.","description_kind":"plain"}},"datadog_service_account":{"version":0,"block":{"attributes":{"disabled":{"type":"bool","description":"Whether the service account is disabled. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"email":{"type":"string","description":"Email of the associated user.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name for the service account.","description_kind":"plain","optional":true},"roles":{"type":["set","string"],"description":"A list a role IDs to assign to the service account.","description_kind":"plain","optional":true}},"description":"Provides a Datadog service account resource. This can be used to create and manage Datadog service accounts.","description_kind":"plain"}},"datadog_service_account_application_key":{"version":0,"block":{"attributes":{"created_at":{"type":"string","description":"Creation date of the application key.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"key":{"type":"string","description":"The value of the service account application key. This value cannot be imported.","description_kind":"plain","computed":true,"sensitive":true},"last4":{"type":"string","description":"The last four characters of the application key.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the application key.","description_kind":"plain","required":true},"service_account_id":{"type":"string","description":"ID of the service account that owns this key.","description_kind":"plain","required":true}},"description":"Provides a Datadog `service_account_application_key` resource. This can be used to create and manage Datadog service account application keys.","description_kind":"plain"}},"datadog_service_definition_yaml":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service_definition":{"type":"string","description":"The YAML/JSON formatted definition of the service","description_kind":"plain","required":true}},"description":"Provides a Datadog service definition resource. This can be used to create and manage Datadog service definitions in the service catalog using the YAML/JSON definition.","description_kind":"plain"}},"datadog_service_level_objective":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description of this service level objective.","description_kind":"plain","optional":true},"force_delete":{"type":"bool","description":"A boolean indicating whether this monitor can be deleted even if it's referenced by other resources (for example, dashboards).","description_kind":"plain","optional":true},"groups":{"type":["set","string"],"description":"A static set of groups to filter monitor-based SLOs","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor_ids":{"type":["set","number"],"description":"A static set of monitor IDs to use as part of the SLO","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of Datadog service level objective","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags to associate with your service level objective. This can help you categorize and filter service level objectives in the service level objectives page of the UI. Note: it's not currently possible to filter by these tags when querying via the API","description_kind":"plain","optional":true},"target_threshold":{"type":"number","description":"The objective's target in `(0,100)`. This must match the corresponding thresholds of the primary time frame.","description_kind":"plain","optional":true,"computed":true},"timeframe":{"type":"string","description":"The primary time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`.","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Valid values are `metric`, `monitor`, `time_slice`.","description_kind":"plain","required":true},"validate":{"type":"bool","description":"Whether or not to validate the SLO.","description_kind":"plain","optional":true},"warning_threshold":{"type":"number","description":"The objective's warning value in `(0,100)`. This must be greater than the target value and match the corresponding thresholds of the primary time frame.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"query":{"nesting_mode":"list","block":{"attributes":{"denominator":{"type":"string","description":"The sum of the `total` events.","description_kind":"plain","required":true},"numerator":{"type":"string","description":"The sum of all the `good` events.","description_kind":"plain","required":true}},"description":"The metric query of good / total events","description_kind":"plain"},"max_items":1},"sli_specification":{"nesting_mode":"list","block":{"block_types":{"time_slice":{"nesting_mode":"list","block":{"attributes":{"comparator":{"type":"string","description":"The comparator used to compare the SLI value to the threshold. Valid values are `\u003e`, `\u003e=`, `\u003c`, `\u003c=`.","description_kind":"plain","required":true},"threshold":{"type":"number","description":"The threshold value to which each SLI value will be compared.","description_kind":"plain","required":true}},"block_types":{"query":{"nesting_mode":"list","block":{"block_types":{"formula":{"nesting_mode":"list","block":{"attributes":{"formula_expression":{"type":"string","description":"The formula string, which is an expression involving named queries.","description_kind":"plain","required":true}},"description":"A list that contains exactly one formula, as only a single formula may be used to define a timeseries query for a time-slice SLO.","description_kind":"plain"},"min_items":1,"max_items":1},"query":{"nesting_mode":"list","block":{"block_types":{"metric_query":{"nesting_mode":"list","block":{"attributes":{"data_source":{"type":"string","description":"The data source for metrics queries. Defaults to `\"metrics\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query for use in formulas.","description_kind":"plain","required":true},"query":{"type":"string","description":"The metrics query definition.","description_kind":"plain","required":true}},"description":"A timeseries formula and functions metrics query.","description_kind":"plain"},"max_items":1}},"description":"A list of data-source-specific queries that are in the formula.","description_kind":"plain"},"min_items":1}},"description":"A timeseries query, containing named data-source-specific queries and a formula involving the named queries.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"A map of SLI specifications to use as part of the SLO.","description_kind":"plain"},"max_items":1},"thresholds":{"nesting_mode":"list","block":{"attributes":{"target":{"type":"number","description":"The objective's target in `(0,100)`.","description_kind":"plain","required":true},"target_display":{"type":"string","description":"A string representation of the target that indicates its precision. It uses trailing zeros to show significant decimal places (e.g. `98.00`).","description_kind":"plain","computed":true},"timeframe":{"type":"string","description":"The time frame for the objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API documentation page. Valid values are `7d`, `30d`, `90d`, `custom`.","description_kind":"plain","required":true},"warning":{"type":"number","description":"The objective's warning value in `(0,100)`. This must be greater than the target value.","description_kind":"plain","optional":true},"warning_display":{"type":"string","description":"A string representation of the warning target (see the description of the target_display field for details).","description_kind":"plain","computed":true}},"description":"A list of thresholds and targets that define the service level objectives from the provided SLIs.","description_kind":"plain"},"min_items":1}},"description":"Provides a Datadog service level objective resource. This can be used to create and manage Datadog service level objectives.","description_kind":"plain"}},"datadog_slo_correction":{"version":0,"block":{"attributes":{"category":{"type":"string","description":"Category the SLO correction belongs to. Valid values are `Scheduled Maintenance`, `Outside Business Hours`, `Deployment`, `Other`.","description_kind":"plain","required":true},"description":{"type":"string","description":"Description of the correction being made.","description_kind":"plain","optional":true},"duration":{"type":"number","description":"Length of time in seconds for a specified `rrule` recurring SLO correction (required if specifying `rrule`)","description_kind":"plain","optional":true},"end":{"type":"number","description":"Ending time of the correction in epoch seconds. Required for one time corrections, but optional if `rrule` is specified","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"rrule":{"type":"string","description":"Recurrence rules as defined in the iCalendar RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, `COUNT` and `UNTIL`.","description_kind":"plain","optional":true},"slo_id":{"type":"string","description":"ID of the SLO that this correction will be applied to.","description_kind":"plain","required":true},"start":{"type":"number","description":"Starting time of the correction in epoch seconds.","description_kind":"plain","required":true},"timezone":{"type":"string","description":"The timezone to display in the UI for the correction times (defaults to \"UTC\")","description_kind":"plain","optional":true}},"description":"Resource for interacting with the slo_correction API.","description_kind":"plain"}},"datadog_spans_metric":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the span-based metric. This field can't be updated after creation.","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"single","block":{"attributes":{"aggregation_type":{"type":"string","description":"The type of aggregation to use. This field can't be updated after creation.","description_kind":"plain","required":true},"include_percentiles":{"type":"bool","description":"Toggle to include or exclude percentile aggregations for distribution metrics. Only present when the `aggregation_type` is `distribution`.","description_kind":"plain","optional":true},"path":{"type":"string","description":"The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\"). This field can't be updated after creation.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"filter":{"nesting_mode":"single","block":{"attributes":{"query":{"type":"string","description":"The search query - following the span search syntax. Defaults to `\"*\"`.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"group_by":{"nesting_mode":"set","block":{"attributes":{"path":{"type":"string","description":"The path to the value the span-based metric will be aggregated over.","description_kind":"plain","required":true},"tag_name":{"type":"string","description":"Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}}},"description":"Provides a Datadog SpansMetric resource. This can be used to create and manage Datadog spans_metric.","description_kind":"plain"}},"datadog_synthetics_concurrency_cap":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"on_demand_concurrency_cap":{"type":"number","description":"Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel.","description_kind":"plain","required":true}},"description":"Provides a Datadog Synthetics On Demand Concurrency Cap API resource. This can be used to manage the Concurrency Cap for Synthetic tests.","description_kind":"plain"}},"datadog_synthetics_global_variable":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the global variable.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Synthetics global variable name.","description_kind":"plain","required":true},"parse_test_id":{"type":"string","description":"Id of the Synthetics test to use for a variable from test.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"A list of role identifiers to associate with the Synthetics global variable.","description_kind":"plain","optional":true},"secure":{"type":"bool","description":"If set to true, the value of the global variable is hidden. Defaults to `false`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to associate with your synthetics global variable.","description_kind":"plain","optional":true},"value":{"type":"string","description":"The value of the global variable.","description_kind":"plain","required":true,"sensitive":true}},"block_types":{"options":{"nesting_mode":"list","block":{"block_types":{"totp_parameters":{"nesting_mode":"list","block":{"attributes":{"digits":{"type":"number","description":"Number of digits for the OTP.","description_kind":"plain","required":true},"refresh_interval":{"type":"number","description":"Interval for which to refresh the token (in seconds).","description_kind":"plain","required":true}},"description":"Parameters needed for MFA/TOTP.","description_kind":"plain"},"max_items":1}},"description":"Additional options for the variable, such as a MFA token.","description_kind":"plain"},"max_items":1},"parse_test_options":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"Required when type = `http_header`. Defines the header to use to extract the value","description_kind":"plain","optional":true},"local_variable_name":{"type":"string","description":"When type is `local_variable`, name of the local variable to use to extract the value.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `local_variable`.","description_kind":"plain","required":true}},"block_types":{"parser":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Type of parser to extract the value. Valid values are `raw`, `json_path`, `regex`, `x_path`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Value for the parser to use, required for type `json_path` or `regex`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description":"ID of the Synthetics test to use a source of the global variable value.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog synthetics global variable resource. This can be used to create and manage Datadog synthetics global variables.","description_kind":"plain"}},"datadog_synthetics_private_location":{"version":0,"block":{"attributes":{"config":{"type":"string","description":"Configuration skeleton for the private location. See installation instructions of the private location on how to use this configuration.","description_kind":"plain","computed":true,"sensitive":true},"description":{"type":"string","description":"Description of the private location.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Synthetics private location name.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"A list of tags to associate with your synthetics private location.","description_kind":"plain","optional":true}},"block_types":{"metadata":{"nesting_mode":"list","block":{"attributes":{"restricted_roles":{"type":["set","string"],"description":"A list of role identifiers pulled from the Roles API to restrict read and write access.","description_kind":"plain","optional":true}},"description":"The private location metadata","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog synthetics private location resource. This can be used to create and manage Datadog synthetics private locations.","description_kind":"plain"}},"datadog_synthetics_test":{"version":0,"block":{"attributes":{"device_ids":{"type":["list","string"],"description":"Required if `type = \"browser\"`. Array with the different device IDs used to run the test. Valid values are `laptop_large`, `tablet`, `mobile_small`, `chrome.laptop_large`, `chrome.tablet`, `chrome.mobile_small`, `firefox.laptop_large`, `firefox.tablet`, `firefox.mobile_small`, `edge.laptop_large`, `edge.tablet`, `edge.mobile_small`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"locations":{"type":["set","string"],"description":"Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations.","description_kind":"plain","required":true},"message":{"type":"string","description":"A message to include with notifications for this synthetics test. Email notifications can be sent to specific users by using the same `@username` notation as events. Defaults to `\"\"`.","description_kind":"plain","optional":true},"monitor_id":{"type":"number","description":"ID of the monitor associated with the Datadog synthetics test.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of Datadog synthetics test.","description_kind":"plain","required":true},"request_headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"request_metadata":{"type":["map","string"],"description":"Metadata to include when performing the gRPC test.","description_kind":"plain","optional":true},"request_query":{"type":["map","string"],"description":"Query arguments name and value map.","description_kind":"plain","optional":true},"set_cookie":{"type":"string","description":"Cookies to be used for a browser test request, using the [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) syntax.","description_kind":"plain","optional":true},"status":{"type":"string","description":"Define whether you want to start (`live`) or pause (`paused`) a Synthetic test. Valid values are `live`, `paused`.","description_kind":"plain","required":true},"subtype":{"type":"string","description":"The subtype of the Synthetic API test. Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, `multi`, `icmp`, `udp`, `websocket`, `grpc`.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"A list of tags to associate with your synthetics test. This can help you categorize and filter tests in the manage synthetics page of the UI. Default is an empty list (`[]`).","description_kind":"plain","optional":true},"type":{"type":"string","description":"Synthetics test type. Valid values are `api`, `browser`.","description_kind":"plain","required":true}},"block_types":{"api_step":{"nesting_mode":"list","block":{"attributes":{"allow_failure":{"type":"bool","description":"Determines whether or not to continue with test if this step fails.","description_kind":"plain","optional":true},"is_critical":{"type":"bool","description":"Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the step.","description_kind":"plain","required":true},"request_headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"request_query":{"type":["map","string"],"description":"Query arguments name and value map.","description_kind":"plain","optional":true},"subtype":{"type":"string","description":"The subtype of the Synthetic multistep API test step. Valid values are `http`, `grpc`. Defaults to `\"http\"`.","description_kind":"plain","optional":true}},"block_types":{"assertion":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"Assertion operator. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)).","description_kind":"plain","required":true},"property":{"type":"string","description":"If assertion type is `header`, this is the header name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details.","description_kind":"plain","optional":true},"timings_scope":{"type":"string","description":"Timings scope for response time assertions. Valid values are `all`, `withoutDNS`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of assertion. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)). Valid values are `body`, `header`, `statusCode`, `certificate`, `responseTime`, `property`, `recordEvery`, `recordSome`, `tlsVersion`, `minTlsVersion`, `latency`, `packetLossPercentage`, `packetsReceived`, `networkHop`, `receivedMessage`, `grpcHealthcheckStatus`, `grpcMetadata`, `grpcProto`, `connection`.","description_kind":"plain","required":true}},"block_types":{"targetjsonpath":{"nesting_mode":"list","block":{"attributes":{"jsonpath":{"type":"string","description":"The JSON path to assert.","description_kind":"plain","required":true},"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true}},"description":"Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"targetxpath":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true},"xpath":{"type":"string","description":"The xpath to assert.","description_kind":"plain","required":true}},"description":"Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1}},"description":"Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below.","description_kind":"plain"}},"extracted_value":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"When type is `http_header`, name of the header to use to extract the value.","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"secure":{"type":"bool","description":"Determines whether or not the extracted value will be obfuscated.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Property of the Synthetics Test Response to use for the variable. Valid values are `http_body`, `http_header`, `local_variable`.","description_kind":"plain","required":true}},"block_types":{"parser":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Regex or JSON path used for the parser. Not used with type `raw`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Values to parse and save as variables from the response.","description_kind":"plain"}},"request_basicauth":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description":"Access key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"access_token_url":{"type":"string","description":"Access token url for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"audience":{"type":"string","description":"Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"client_id":{"type":"string","description":"Client ID for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"client_secret":{"type":"string","description":"Client secret for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true,"sensitive":true},"domain":{"type":"string","description":"Domain for `ntlm` authentication.","description_kind":"plain","optional":true},"password":{"type":"string","description":"Password for authentication.","description_kind":"plain","optional":true,"sensitive":true},"region":{"type":"string","description":"Region for `SIGV4` authentication.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"scope":{"type":"string","description":"Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"secret_key":{"type":"string","description":"Secret key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"service_name":{"type":"string","description":"Service name for `SIGV4` authentication.","description_kind":"plain","optional":true},"session_token":{"type":"string","description":"Session token for `SIGV4` authentication.","description_kind":"plain","optional":true},"token_api_authentication":{"type":"string","description":"Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of basic authentication to use when performing the test. Defaults to `\"web\"`.","description_kind":"plain","optional":true},"username":{"type":"string","description":"Username for authentication.","description_kind":"plain","optional":true},"workstation":{"type":"string","description":"Workstation for `ntlm` authentication.","description_kind":"plain","optional":true}},"description":"The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_client_certificate":{"nesting_mode":"list","block":{"block_types":{"cert":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"key":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_definition":{"nesting_mode":"list","block":{"attributes":{"allow_insecure":{"type":"bool","description":"Allows loading insecure content for an HTTP request in an API test or in a multistep API test step.","description_kind":"plain","optional":true},"body":{"type":"string","description":"The request body.","description_kind":"plain","optional":true},"body_type":{"type":"string","description":"Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`.","description_kind":"plain","optional":true},"call_type":{"type":"string","description":"The type of gRPC call to perform. Valid values are `healthcheck`, `unary`.","description_kind":"plain","optional":true},"certificate_domains":{"type":["list","string"],"description":"By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in `certificate_domains`.","description_kind":"plain","optional":true},"dns_server":{"type":"string","description":"DNS server to use for DNS tests (`subtype = \"dns\"`).","description_kind":"plain","optional":true},"dns_server_port":{"type":"number","description":"DNS server port to use for DNS tests.","description_kind":"plain","optional":true},"follow_redirects":{"type":"bool","description":"Determines whether or not the API HTTP test should follow redirects.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host name to perform the test with.","description_kind":"plain","optional":true},"message":{"type":"string","description":"For UDP and websocket tests, message to send with the request.","description_kind":"plain","optional":true},"method":{"type":"string","description":"Either the HTTP method/verb to use or a gRPC method available on the service set in the `service` field. Required if `subtype` is `HTTP` or if `subtype` is `grpc` and `callType` is `unary`.","description_kind":"plain","optional":true},"no_saving_response_body":{"type":"bool","description":"Determines whether or not to save the response body.","description_kind":"plain","optional":true},"number_of_packets":{"type":"number","description":"Number of pings to use per test for ICMP tests (`subtype = \"icmp\"`) between 0 and 10.","description_kind":"plain","optional":true},"persist_cookies":{"type":"bool","description":"Persist cookies across redirects.","description_kind":"plain","optional":true},"plain_proto_file":{"type":"string","description":"The content of a proto file as a string.","description_kind":"plain","optional":true},"port":{"type":"number","description":"Port to use when performing the test.","description_kind":"plain","optional":true},"proto_json_descriptor":{"type":"string","description":"A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead.","description_kind":"plain","deprecated":true,"optional":true},"servername":{"type":"string","description":"For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number.","description_kind":"plain","optional":true},"service":{"type":"string","description":"The gRPC service on which you want to perform the gRPC call.","description_kind":"plain","optional":true},"should_track_hops":{"type":"bool","description":"This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = \"icmp\"`).","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"Timeout in seconds for the test. Defaults to `60`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to send the request to.","description_kind":"plain","optional":true}},"description":"The request for the api step.","description_kind":"plain"},"max_items":1},"request_proxy":{"nesting_mode":"list","block":{"attributes":{"headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"url":{"type":"string","description":"URL of the proxy to perform the test.","description_kind":"plain","required":true}},"description":"The proxy to perform the test.","description_kind":"plain"},"max_items":1},"retry":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Interval between a failed test and the next retry in milliseconds. Defaults to `300`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description":"Steps for multistep api tests","description_kind":"plain"}},"assertion":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"Assertion operator. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)).","description_kind":"plain","required":true},"property":{"type":"string","description":"If assertion type is `header`, this is the header name.","description_kind":"plain","optional":true},"target":{"type":"string","description":"Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details.","description_kind":"plain","optional":true},"timings_scope":{"type":"string","description":"Timings scope for response time assertions. Valid values are `all`, `withoutDNS`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of assertion. **Note** Only some combinations of `type` and `operator` are valid (please refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test)). Valid values are `body`, `header`, `statusCode`, `certificate`, `responseTime`, `property`, `recordEvery`, `recordSome`, `tlsVersion`, `minTlsVersion`, `latency`, `packetLossPercentage`, `packetsReceived`, `networkHop`, `receivedMessage`, `grpcHealthcheckStatus`, `grpcMetadata`, `grpcProto`, `connection`.","description_kind":"plain","required":true}},"block_types":{"targetjsonpath":{"nesting_mode":"list","block":{"attributes":{"jsonpath":{"type":"string","description":"The JSON path to assert.","description_kind":"plain","required":true},"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true}},"description":"Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"targetxpath":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"The specific operator to use on the path.","description_kind":"plain","required":true},"targetvalue":{"type":"string","description":"Expected matching value.","description_kind":"plain","optional":true},"xpath":{"type":"string","description":"The xpath to assert.","description_kind":"plain","required":true}},"description":"Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1}},"description":"Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below.","description_kind":"plain"}},"browser_step":{"nesting_mode":"list","block":{"attributes":{"allow_failure":{"type":"bool","description":"Determines if the step should be allowed to fail.","description_kind":"plain","optional":true},"force_element_update":{"type":"bool","description":"Force update of the \"element\" parameter for the step","description_kind":"plain","optional":true},"is_critical":{"type":"bool","description":"Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the step.","description_kind":"plain","required":true},"no_screenshot":{"type":"bool","description":"Prevents saving screenshots of the step.","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"Used to override the default timeout of a step.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`.","description_kind":"plain","required":true}},"block_types":{"params":{"nesting_mode":"list","block":{"attributes":{"attribute":{"type":"string","description":"Name of the attribute to use for an \"assert attribute\" step.","description_kind":"plain","optional":true},"check":{"type":"string","description":"Check type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`.","description_kind":"plain","optional":true},"click_type":{"type":"string","description":"Type of click to use for a \"click\" step.","description_kind":"plain","optional":true},"code":{"type":"string","description":"Javascript code to use for the step.","description_kind":"plain","optional":true},"delay":{"type":"number","description":"Delay between each key stroke for a \"type test\" step.","description_kind":"plain","optional":true},"element":{"type":"string","description":"Element to use for the step, json encoded string.","description_kind":"plain","optional":true},"email":{"type":"string","description":"Details of the email for an \"assert email\" step.","description_kind":"plain","optional":true},"file":{"type":"string","description":"JSON encoded string used for an \"assert download\" step. Refer to the examples for a usage example showing the schema.","description_kind":"plain","optional":true},"files":{"type":"string","description":"Details of the files for an \"upload files\" step, json encoded string.","description_kind":"plain","optional":true},"modifiers":{"type":["list","string"],"description":"Modifier to use for a \"press key\" step.","description_kind":"plain","optional":true},"playing_tab_id":{"type":"string","description":"ID of the tab to play the subtest.","description_kind":"plain","optional":true},"request":{"type":"string","description":"Request for an API step.","description_kind":"plain","optional":true},"subtest_public_id":{"type":"string","description":"ID of the Synthetics test to use as subtest.","description_kind":"plain","optional":true},"value":{"type":"string","description":"Value of the step.","description_kind":"plain","optional":true},"with_click":{"type":"bool","description":"For \"file upload\" steps.","description_kind":"plain","optional":true},"x":{"type":"number","description":"X coordinates for a \"scroll step\".","description_kind":"plain","optional":true},"y":{"type":"number","description":"Y coordinates for a \"scroll step\".","description_kind":"plain","optional":true}},"block_types":{"element_user_locator":{"nesting_mode":"list","block":{"attributes":{"fail_test_on_cannot_locate":{"type":"bool","description":"Defaults to `false`.","description_kind":"plain","optional":true}},"block_types":{"value":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Defaults to `\"css\"`.","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Custom user selector to use for the step.","description_kind":"plain"},"max_items":1},"variable":{"nesting_mode":"list","block":{"attributes":{"example":{"type":"string","description":"Example of the extracted variable. Defaults to `\"\"`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the extracted variable.","description_kind":"plain","optional":true}},"description":"Details of the variable to extract.","description_kind":"plain"},"max_items":1}},"description":"Parameters for the step.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Steps for browser tests.","description_kind":"plain"}},"browser_variable":{"nesting_mode":"list","block":{"attributes":{"example":{"type":"string","description":"Example for the variable. Defaults to `\"\"`.","description_kind":"plain","optional":true},"id":{"type":"string","description":"ID of the global variable to use. This is actually only used (and required) in the case of using a variable of type `global`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the variable.","description_kind":"plain","required":true},"pattern":{"type":"string","description":"Pattern of the variable. Defaults to `\"\"`.","description_kind":"plain","optional":true},"secure":{"type":"bool","description":"Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text`","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of browser test variable. Valid values are `element`, `email`, `global`, `javascript`, `text`.","description_kind":"plain","required":true}},"description":"Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below.","description_kind":"plain"}},"config_variable":{"nesting_mode":"list","block":{"attributes":{"example":{"type":"string","description":"Example for the variable. This value is not returned by the api when `secure = true`. Avoid drift by only making updates to this value from within Terraform.","description_kind":"plain","optional":true},"id":{"type":"string","description":"When type = `global`, ID of the global variable to use.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the variable.","description_kind":"plain","required":true},"pattern":{"type":"string","description":"Pattern of the variable. This value is not returned by the api when `secure = true`. Avoid drift by only making updates to this value from within Terraform.","description_kind":"plain","optional":true},"secure":{"type":"bool","description":"Whether the value of this variable will be obfuscated in test results. Defaults to `false`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of test configuration variable. Valid values are `global`, `text`.","description_kind":"plain","required":true}},"description":"Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below.","description_kind":"plain"}},"options_list":{"nesting_mode":"list","block":{"attributes":{"accept_self_signed":{"type":"bool","description":"For SSL test, whether or not the test should allow self signed certificates.","description_kind":"plain","optional":true},"allow_insecure":{"type":"bool","description":"Allows loading insecure content for an HTTP request in an API test or in a multistep API test step.","description_kind":"plain","optional":true},"check_certificate_revocation":{"type":"bool","description":"For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP.","description_kind":"plain","optional":true},"disable_cors":{"type":"bool","description":"Disable Cross-Origin Resource Sharing for browser tests.","description_kind":"plain","optional":true},"disable_csp":{"type":"bool","description":"Disable Content Security Policy for browser tests.","description_kind":"plain","optional":true},"follow_redirects":{"type":"bool","description":"Determines whether or not the API HTTP test should follow redirects.","description_kind":"plain","optional":true},"http_version":{"type":"string","description":"HTTP version to use for a Synthetics API test. Valid values are `http1`, `http2`, `any`.","description_kind":"plain","optional":true},"ignore_server_certificate_error":{"type":"bool","description":"Ignore server certificate error for browser tests.","description_kind":"plain","optional":true},"initial_navigation_timeout":{"type":"number","description":"Timeout before declaring the initial step as failed (in seconds) for browser tests.","description_kind":"plain","optional":true},"min_failure_duration":{"type":"number","description":"Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`.","description_kind":"plain","optional":true},"min_location_failed":{"type":"number","description":"Minimum number of locations in failure required to trigger an alert. Defaults to `1`.","description_kind":"plain","optional":true},"monitor_name":{"type":"string","description":"The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs.","description_kind":"plain","optional":true},"monitor_priority":{"type":"number","description_kind":"plain","optional":true},"no_screenshot":{"type":"bool","description":"Prevents saving screenshots of the steps.","description_kind":"plain","optional":true},"restricted_roles":{"type":["set","string"],"description":"A list of role identifiers pulled from the Roles API to restrict read and write access.","description_kind":"plain","optional":true},"tick_every":{"type":"number","description":"How often the test should run (in seconds).","description_kind":"plain","required":true}},"block_types":{"ci":{"nesting_mode":"list","block":{"attributes":{"execution_rule":{"type":"string","description":"Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`.","description_kind":"plain","optional":true}},"description":"CI/CD options for a Synthetic test.","description_kind":"plain"},"max_items":1},"monitor_options":{"nesting_mode":"list","block":{"attributes":{"renotify_interval":{"type":"number","description":"Specify a renotification frequency in minutes. Values available by default are `0`, `10`, `20`, `30`, `40`, `50`, `60`, `90`, `120`, `180`, `240`, `300`, `360`, `720`, `1440`. Defaults to `0`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"retry":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Interval between a failed test and the next retry in milliseconds. Defaults to `300`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"rum_settings":{"nesting_mode":"list","block":{"attributes":{"application_id":{"type":"string","description":"RUM application ID used to collect RUM data for the browser test.","description_kind":"plain","optional":true},"client_token_id":{"type":"number","description":"RUM application API key ID used to collect RUM data for the browser test.","description_kind":"plain","optional":true,"sensitive":true},"is_enabled":{"type":"bool","description":"Determines whether RUM data is collected during test runs.","description_kind":"plain","required":true}},"description":"The RUM data collection settings for the Synthetic browser test.","description_kind":"plain"},"max_items":1},"scheduling":{"nesting_mode":"list","block":{"attributes":{"timezone":{"type":"string","description":"Timezone in which the timeframe is based.","description_kind":"plain","required":true}},"block_types":{"timeframes":{"nesting_mode":"set","block":{"attributes":{"day":{"type":"number","description":"Number representing the day of the week","description_kind":"plain","required":true},"from":{"type":"string","description":"The hour of the day on which scheduling starts.","description_kind":"plain","required":true},"to":{"type":"string","description":"The hour of the day on which scheduling ends.","description_kind":"plain","required":true}},"description":"Array containing objects describing the scheduling pattern to apply to each day.","description_kind":"plain"},"min_items":1}},"description":"Object containing timeframes and timezone used for advanced scheduling.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"request_basicauth":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description":"Access key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"access_token_url":{"type":"string","description":"Access token url for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"audience":{"type":"string","description":"Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"client_id":{"type":"string","description":"Client ID for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true},"client_secret":{"type":"string","description":"Client secret for `oauth-client` or `oauth-rop` authentication.","description_kind":"plain","optional":true,"sensitive":true},"domain":{"type":"string","description":"Domain for `ntlm` authentication.","description_kind":"plain","optional":true},"password":{"type":"string","description":"Password for authentication.","description_kind":"plain","optional":true,"sensitive":true},"region":{"type":"string","description":"Region for `SIGV4` authentication.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"scope":{"type":"string","description":"Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `\"\"`.","description_kind":"plain","optional":true},"secret_key":{"type":"string","description":"Secret key for `SIGV4` authentication.","description_kind":"plain","optional":true,"sensitive":true},"service_name":{"type":"string","description":"Service name for `SIGV4` authentication.","description_kind":"plain","optional":true},"session_token":{"type":"string","description":"Session token for `SIGV4` authentication.","description_kind":"plain","optional":true},"token_api_authentication":{"type":"string","description":"Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of basic authentication to use when performing the test. Defaults to `\"web\"`.","description_kind":"plain","optional":true},"username":{"type":"string","description":"Username for authentication.","description_kind":"plain","optional":true},"workstation":{"type":"string","description":"Workstation for `ntlm` authentication.","description_kind":"plain","optional":true}},"description":"The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_client_certificate":{"nesting_mode":"list","block":{"block_types":{"cert":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"key":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"Content of the certificate.","description_kind":"plain","required":true,"sensitive":true},"filename":{"type":"string","description":"File name for the certificate. Defaults to `\"Provided in Terraform config\"`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below.","description_kind":"plain"},"max_items":1},"request_definition":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description":"The request body.","description_kind":"plain","optional":true},"body_type":{"type":"string","description":"Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`.","description_kind":"plain","optional":true},"call_type":{"type":"string","description":"The type of gRPC call to perform. Valid values are `healthcheck`, `unary`.","description_kind":"plain","optional":true},"certificate_domains":{"type":["list","string"],"description":"By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in `certificate_domains`.","description_kind":"plain","optional":true},"dns_server":{"type":"string","description":"DNS server to use for DNS tests (`subtype = \"dns\"`).","description_kind":"plain","optional":true},"dns_server_port":{"type":"number","description":"DNS server port to use for DNS tests.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host name to perform the test with.","description_kind":"plain","optional":true},"message":{"type":"string","description":"For UDP and websocket tests, message to send with the request.","description_kind":"plain","optional":true},"method":{"type":"string","description":"Either the HTTP method/verb to use or a gRPC method available on the service set in the `service` field. Required if `subtype` is `HTTP` or if `subtype` is `grpc` and `callType` is `unary`.","description_kind":"plain","optional":true},"no_saving_response_body":{"type":"bool","description":"Determines whether or not to save the response body.","description_kind":"plain","optional":true},"number_of_packets":{"type":"number","description":"Number of pings to use per test for ICMP tests (`subtype = \"icmp\"`) between 0 and 10.","description_kind":"plain","optional":true},"persist_cookies":{"type":"bool","description":"Persist cookies across redirects.","description_kind":"plain","optional":true},"plain_proto_file":{"type":"string","description":"The content of a proto file as a string.","description_kind":"plain","optional":true},"port":{"type":"number","description":"Port to use when performing the test.","description_kind":"plain","optional":true},"proto_json_descriptor":{"type":"string","description":"A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead.","description_kind":"plain","deprecated":true,"optional":true},"servername":{"type":"string","description":"For SSL tests, it specifies on which server you want to initiate the TLS handshake, allowing the server to present one of multiple possible certificates on the same IP address and TCP port number.","description_kind":"plain","optional":true},"service":{"type":"string","description":"The gRPC service on which you want to perform the gRPC call.","description_kind":"plain","optional":true},"should_track_hops":{"type":"bool","description":"This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = \"icmp\"`).","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"Timeout in seconds for the test. Defaults to `60`.","description_kind":"plain","optional":true},"url":{"type":"string","description":"The URL to send the request to.","description_kind":"plain","optional":true}},"description":"Required if `type = \"api\"`. The synthetics test request.","description_kind":"plain"},"max_items":1},"request_proxy":{"nesting_mode":"list","block":{"attributes":{"headers":{"type":["map","string"],"description":"Header name and value map.","description_kind":"plain","optional":true},"url":{"type":"string","description":"URL of the proxy to perform the test.","description_kind":"plain","required":true}},"description":"The proxy to perform the test.","description_kind":"plain"},"max_items":1}},"description":"Provides a Datadog synthetics test resource. This can be used to create and manage Datadog synthetics test.","description_kind":"plain"}},"datadog_team":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Free-form markdown description/content for the team's homepage.","description_kind":"plain","required":true},"handle":{"type":"string","description":"The team's identifier","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"link_count":{"type":"number","description":"The number of links belonging to the team.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the team.","description_kind":"plain","required":true},"summary":{"type":"string","description":"A brief summary of the team, derived from the `description`.","description_kind":"plain","computed":true},"user_count":{"type":"number","description":"The number of users belonging to the team.","description_kind":"plain","computed":true}},"description":"Provides a Datadog Team resource. This can be used to create and manage Datadog team.","description_kind":"plain"}},"datadog_team_link":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"label":{"type":"string","description":"The link's label.","description_kind":"plain","required":true},"position":{"type":"number","description":"The link's position, used to sort links for the team.","description_kind":"plain","optional":true,"computed":true},"team_id":{"type":"string","description":"ID of the team the link is associated with.","description_kind":"plain","required":true},"url":{"type":"string","description":"The URL for the link.","description_kind":"plain","required":true}},"description":"Provides a Datadog TeamLink resource. This can be used to create and manage Datadog team_link.","description_kind":"plain"}},"datadog_team_membership":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"role":{"type":"string","description":"The user's role within the team. Valid values are `admin`.","description_kind":"plain","optional":true},"team_id":{"type":"string","description":"ID of the team the team membership is associated with.","description_kind":"plain","required":true},"user_id":{"type":"string","description":"The ID of the user.","description_kind":"plain","required":true}},"description":"Provides a Datadog TeamMembership resource. This can be used to create and manage Datadog team_membership.","description_kind":"plain"}},"datadog_team_permission_setting":{"version":0,"block":{"attributes":{"action":{"type":"string","description":"The identifier for the action. Valid values are `manage_membership`, `edit`.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"team_id":{"type":"string","description":"ID of the team the team permission setting is associated with.","description_kind":"plain","required":true},"value":{"type":"string","description":"The action value. Valid values are `admins`, `members`, `organization`, `user_access_manage`, `teams_manage`.","description_kind":"plain","required":true}},"description":"Provides a Datadog TeamPermissionSetting resource. This can be used to manage Datadog team_permission_setting.","description_kind":"plain"}},"datadog_user":{"version":0,"block":{"attributes":{"disabled":{"type":"bool","description":"Whether the user is disabled. Defaults to `false`.","description_kind":"plain","optional":true},"email":{"type":"string","description":"Email address for user.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name for user.","description_kind":"plain","optional":true},"roles":{"type":["set","string"],"description":"A list a role IDs to assign to the user.","description_kind":"plain","optional":true},"send_user_invitation":{"type":"bool","description":"Whether an invitation email should be sent when the user is created. Defaults to `true`.","description_kind":"plain","optional":true},"user_invitation_id":{"type":"string","description":"The ID of the user invitation that was sent when creating the user.","description_kind":"plain","computed":true},"verified":{"type":"bool","description":"Returns `true` if the user is verified.","description_kind":"plain","computed":true}},"description":"Provides a Datadog user resource. This can be used to create and manage Datadog users.","description_kind":"plain"}},"datadog_webhook":{"version":0,"block":{"attributes":{"custom_headers":{"type":"string","description":"The headers attached to the webhook.","description_kind":"plain","optional":true},"encode_as":{"type":"string","description":"Encoding type. Valid values are `json`, `form`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the webhook. It corresponds with `\u003cWEBHOOK_NAME\u003e`.","description_kind":"plain","required":true},"payload":{"type":"string","description":"The payload of the webhook.","description_kind":"plain","optional":true,"computed":true},"url":{"type":"string","description":"The URL of the webhook.","description_kind":"plain","required":true}},"description":"Provides a Datadog webhook resource. This can be used to create and manage Datadog webhooks.","description_kind":"plain"}},"datadog_webhook_custom_variable":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_secret":{"type":"bool","description":"Whether the custom variable is secret or not.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the variable. It corresponds with `\u003cCUSTOM_VARIABLE_NAME\u003e`.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the custom variable.","description_kind":"plain","required":true,"sensitive":true}},"description":"Provides a Datadog webhooks custom variable resource. This can be used to create and manage Datadog webhooks custom variables.","description_kind":"plain"}}},"data_source_schemas":{"datadog_api_key":{"version":0,"block":{"attributes":{"exact_match":{"type":"bool","description":"Whether to use exact match when searching by name.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","optional":true},"key":{"type":"string","description":"The value of the API Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for API Key.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about an existing api key.","description_kind":"plain"}},"datadog_apm_retention_filters_order":{"version":0,"block":{"attributes":{"filter_ids":{"type":["list","string"],"description":"The filter IDs list. The order of filters IDs in this attribute defines the overall APM retention filters order.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog [APM Retention Filters API](https://docs.datadoghq.com/api/v2/apm-retention-filters/) order datasource. This can be used to retrieve APM retention filters order.","description_kind":"plain"}},"datadog_application_key":{"version":0,"block":{"attributes":{"exact_match":{"type":"bool","description":"Whether to use exact match when searching by name.","description_kind":"plain","optional":true},"id":{"type":"string","description":"Id for Application Key.","description_kind":"plain","optional":true},"key":{"type":"string","description":"The value of the Application Key.","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description":"Name for Application Key.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about an existing application key.","description_kind":"plain"}},"datadog_cloud_workload_security_agent_rules":{"version":0,"block":{"attributes":{"agent_rules":{"type":["list",["object",{"description":"string","enabled":"bool","expression":"string","id":"string","name":"string"}]],"description":"List of Agent rules.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to retrieve information about existing Cloud Workload Security Agent Rules for use in other resources.","description_kind":"plain"}},"datadog_dashboard":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The dashboard name to search for. Must only match one dashboard.","description_kind":"plain","required":true},"title":{"type":"string","description":"The name of the dashboard.","description_kind":"plain","computed":true},"url":{"type":"string","description":"The URL to a specific dashboard.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing dashboard, for use in other resources. In particular, it can be used in a monitor message to link to a specific dashboard.","description_kind":"plain"}},"datadog_dashboard_list":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"A dashboard list name to limit the search.","description_kind":"plain","required":true}},"description":"Use this data source to retrieve information about an existing dashboard list, for use in other resources. In particular, it can be used in a dashboard to register it in the list.","description_kind":"plain"}},"datadog_hosts":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"String to filter search results.","description_kind":"plain","optional":true},"from":{"type":"number","description":"Number of seconds since UNIX epoch from which you want to search your hosts.","description_kind":"plain","optional":true},"host_list":{"type":["list",["object",{"aliases":["list","string"],"apps":["list","string"],"aws_name":"string","host_name":"string","id":"number","is_muted":"bool","last_reported_time":"number","meta":["object",{"agent_version":"string","cpu_cores":"number","gohai":"string","machine":"string","platform":"string","processor":"string","python_version":"string","socket_fqdn":"string","socket_hostname":"string"}],"metrics":["object",{"cpu":"number","iowait":"number","load":"number"}],"mute_timeout":"number","name":"string","sources":["list","string"],"up":"bool"}]],"description":"List of hosts (1000 Max).","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"include_muted_hosts_data":{"type":"bool","description":"Include information on the muted status of hosts and when the mute expires.","description_kind":"plain","optional":true},"sort_dir":{"type":"string","description":"Direction of sort.","description_kind":"plain","optional":true},"sort_field":{"type":"string","description":"Sort hosts by this field.","description_kind":"plain","optional":true},"total_matching":{"type":"number","description":"Number of host matching the query.","description_kind":"plain","computed":true},"total_returned":{"type":"number","description":"Number of host returned.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about your live hosts in Datadog.","description_kind":"plain"}},"datadog_integration_aws_logs_services":{"version":0,"block":{"attributes":{"aws_logs_services":{"type":["list",["object",{"id":"string","label":"string"}]],"description":"List of AWS log ready services.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to retrieve all AWS log ready services.","description_kind":"plain"}},"datadog_integration_aws_namespace_rules":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"namespace_rules":{"type":["list","string"],"description":"The list of available namespace rules for a Datadog-AWS integration.","description_kind":"plain","computed":true}},"description":"Provides a Datadog AWS Integration Namespace Rules data source. This can be used to retrieve all available namespace rules for a Datadog-AWS integration.","description_kind":"plain"}},"datadog_ip_ranges":{"version":0,"block":{"attributes":{"agents_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Agent endpoint.","description_kind":"plain","computed":true},"agents_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Agent endpoint.","description_kind":"plain","computed":true},"api_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the API endpoint.","description_kind":"plain","computed":true},"api_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the API endpoint.","description_kind":"plain","computed":true},"apm_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the APM endpoint.","description_kind":"plain","computed":true},"apm_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the APM endpoint.","description_kind":"plain","computed":true},"global_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for all Datadog endpoints.","description_kind":"plain","computed":true},"global_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for all Datadog endpoints.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"logs_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Logs endpoint.","description_kind":"plain","computed":true},"logs_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Logs endpoint.","description_kind":"plain","computed":true},"orchestrator_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Orchestrator endpoint.","description_kind":"plain","computed":true},"orchestrator_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Orchestrator endpoint.","description_kind":"plain","computed":true},"process_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Process endpoint.","description_kind":"plain","computed":true},"process_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Process endpoint.","description_kind":"plain","computed":true},"synthetics_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Synthetics endpoint.","description_kind":"plain","computed":true},"synthetics_ipv4_by_location":{"type":["map","string"],"description":"A map of IPv4 prefixes (string of concatenated IPs, delimited by ',') by location.","description_kind":"plain","computed":true},"synthetics_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Synthetics endpoint.","description_kind":"plain","computed":true},"synthetics_ipv6_by_location":{"type":["map","string"],"description":"A map of IPv6 prefixes (string of concatenated IPs, delimited by ',') by location.","description_kind":"plain","computed":true},"webhooks_ipv4":{"type":["list","string"],"description":"An Array of IPv4 addresses in CIDR format specifying the A records for the Webhooks endpoint.","description_kind":"plain","computed":true},"webhooks_ipv6":{"type":["list","string"],"description":"An Array of IPv6 addresses in CIDR format specifying the A records for the Webhooks endpoint.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about Datadog's IP addresses.","description_kind":"plain"}},"datadog_logs_archives_order":{"version":0,"block":{"attributes":{"archive_ids":{"type":["list","string"],"description":"The archive IDs list. The order of archive IDs in this attribute defines the overall archive order for logs.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Get the current order of your logs archives.","description_kind":"plain"}},"datadog_logs_indexes":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"logs_indexes":{"type":["list",["object",{"daily_limit":"number","daily_limit_reset":["list",["object",{"reset_time":"string","reset_utc_offset":"string"}]],"daily_limit_warning_threshold_percentage":"number","exclusion_filter":["list",["object",{"filter":["list",["object",{"query":"string","sample_rate":"number"}]],"is_enabled":"bool","name":"string"}]],"filter":["list",["object",{"query":"string"}]],"name":"string","retention_days":"number"}]],"description":"List of logs indexes","description_kind":"plain","computed":true}},"description":"Use this data source to list several existing logs indexes for use in other resources.","description_kind":"plain"}},"datadog_logs_indexes_order":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"index_names":{"type":["list","string"],"description":"Array of strings identifying by their name(s) the index(es) of your organization. Logs are tested against the query filter of each index one by one, following the order of the array. Logs are eventually stored in the first matching index.","description_kind":"plain","computed":true}},"description":"Get the current order of your log indexes.","description_kind":"plain"}},"datadog_logs_pipelines":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_read_only":{"type":"string","description":"Filter parameter for retrieved pipelines","description_kind":"plain","optional":true},"logs_pipelines":{"type":["list",["object",{"filter":["list",["object",{"query":"string"}]],"id":"string","is_enabled":"bool","is_read_only":"bool","name":"string","type":"string"}]],"description":"List of logs pipelines","description_kind":"plain","computed":true}},"description":"Use this data source to list all existing logs pipelines for use in other resources.","description_kind":"plain"}},"datadog_monitor":{"version":0,"block":{"attributes":{"enable_logs_sample":{"type":"bool","description":"Whether or not a list of log values which triggered the alert is included. This is only used by log monitors.","description_kind":"plain","computed":true},"enable_samples":{"type":"bool","description":"Whether or not a list of samples which triggered the alert is included. This is only used by CI Test and Pipeline monitors.","description_kind":"plain","computed":true},"escalation_message":{"type":"string","description":"Message included with a re-notification for this monitor.","description_kind":"plain","computed":true},"evaluation_delay":{"type":"number","description":"Time (in seconds) for which evaluation is delayed. This is only used by metric monitors.","description_kind":"plain","computed":true},"group_retention_duration":{"type":"string","description":"The time span after which groups with missing data are dropped from the monitor state. The minimum value is one hour, and the maximum value is 72 hours. Example values are: 60m, 1h, and 2d. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.","description_kind":"plain","computed":true},"groupby_simple_monitor":{"type":"bool","description":"Whether or not to trigger one alert if any source breaches a threshold.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_tags":{"type":"bool","description":"Whether or not notifications from the monitor automatically inserts its triggering tags into the title.","description_kind":"plain","computed":true},"locked":{"type":"bool","description":"Whether or not changes to the monitor are restricted to the creator or admins.","description_kind":"plain","computed":true},"message":{"type":"string","description":"Message included with notifications for this monitor","description_kind":"plain","computed":true},"monitor_tags_filter":{"type":["list","string"],"description":"A list of monitor tags to limit the search. This filters on the tags set on the monitor itself.","description_kind":"plain","optional":true},"monitor_threshold_windows":{"type":["list",["object",{"recovery_window":"string","trigger_window":"string"}]],"description":"Mapping containing `recovery_window` and `trigger_window` values, e.g. `last_15m`. This is only used by anomaly monitors.","description_kind":"plain","computed":true},"monitor_thresholds":{"type":["list",["object",{"critical":"string","critical_recovery":"string","ok":"string","unknown":"string","warning":"string","warning_recovery":"string"}]],"description":"Alert thresholds of the monitor.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the monitor","description_kind":"plain","computed":true},"name_filter":{"type":"string","description":"A monitor name to limit the search.","description_kind":"plain","optional":true},"new_group_delay":{"type":"number","description":"Time (in seconds) to skip evaluations for new groups.","description_kind":"plain","computed":true},"new_host_delay":{"type":"number","description":"Time (in seconds) allowing a host to boot and applications to fully start before starting the evaluation of monitor results.","description_kind":"plain","computed":true},"no_data_timeframe":{"type":"number","description":"The number of minutes before the monitor notifies when data stops reporting.","description_kind":"plain","computed":true},"notification_preset_name":{"type":"string","description":"Toggles the display of additional content sent in the monitor notification. Valid values are: `show_all`, `hide_query`, `hide_handles`, and `hide_all`.","description_kind":"plain","computed":true},"notify_audit":{"type":"bool","description":"Whether or not tagged users are notified on changes to the monitor.","description_kind":"plain","computed":true},"notify_by":{"type":["set","string"],"description":"Controls what granularity a monitor alerts on. Only available for monitors with groupings. For instance, a monitor grouped by `cluster`, `namespace`, and `pod` can be configured to only notify on each new `cluster` violating the alert conditions by setting `notify_by` to `['cluster']`. Tags mentioned in `notify_by` must be a subset of the grouping tags in the query. For example, a query grouped by `cluster` and `namespace` cannot notify on `region`. Setting `notify_by` to `[*]` configures the monitor to notify as a simple-alert.","description_kind":"plain","computed":true},"notify_no_data":{"type":"bool","description":"Whether or not this monitor notifies when data stops reporting.","description_kind":"plain","computed":true},"on_missing_data":{"type":"string","description":"Controls how groups or monitors are treated if an evaluation does not return any data points. The default option results in different behavior depending on the monitor query type. For monitors using `Count` queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions. For monitors using any query type other than `Count`, for example `Gauge`, `Measure`, or `Rate`, the monitor shows the last known status. This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`.","description_kind":"plain","computed":true},"query":{"type":"string","description":"Query of the monitor.","description_kind":"plain","computed":true},"renotify_interval":{"type":"number","description":"The number of minutes after the last notification before the monitor re-notifies on the current status.","description_kind":"plain","computed":true},"renotify_occurrences":{"type":"number","description":"The number of re-notification messages that should be sent on the current status.","description_kind":"plain","computed":true},"renotify_statuses":{"type":["set","string"],"description":"The types of statuses for which re-notification messages should be sent. Valid values are `alert`, `warn`, `no data`.","description_kind":"plain","computed":true},"require_full_window":{"type":"bool","description":"Whether or not the monitor needs a full window of data before it is evaluated.","description_kind":"plain","computed":true},"restricted_roles":{"type":["set","string"],"description_kind":"plain","computed":true},"scheduling_options":{"type":["list",["object",{"custom_schedule":["list",["object",{"recurrence":["set",["object",{"rrule":"string","start":"string","timezone":"string"}]]}]],"evaluation_window":["list",["object",{"day_starts":"string","hour_starts":"number","month_starts":"number"}]]}]],"description":"Configuration options for scheduling.","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"List of tags associated with the monitor.","description_kind":"plain","computed":true},"tags_filter":{"type":["list","string"],"description":"A list of tags to limit the search. This filters on the monitor scope.","description_kind":"plain","optional":true},"timeout_h":{"type":"number","description":"Number of hours of the monitor not reporting data before it automatically resolves from a triggered state.","description_kind":"plain","computed":true},"type":{"type":"string","description":"Type of the monitor.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing monitor for use in other resources.","description_kind":"plain"}},"datadog_monitor_config_policies":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor_config_policies":{"type":["list",["object",{"id":"string","policy_type":"string","tag_policy":["list",["object",{"tag_key":"string","tag_key_required":"bool","valid_tag_values":["list","string"]}]]}]],"description":"List of monitor config policies","description_kind":"plain","computed":true}},"description":"Use this data source to list existing monitor config policies for use in other resources.","description_kind":"plain"}},"datadog_monitors":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"monitor_tags_filter":{"type":["list","string"],"description":"A list of monitor tags to limit the search. This filters on the tags set on the monitor itself.","description_kind":"plain","optional":true},"monitors":{"type":["list",["object",{"id":"number","name":"string","type":"string"}]],"description":"List of monitors","description_kind":"plain","computed":true},"name_filter":{"type":"string","description":"A monitor name to limit the search.","description_kind":"plain","optional":true},"tags_filter":{"type":["list","string"],"description":"A list of tags to limit the search. This filters on the monitor scope.","description_kind":"plain","optional":true}},"description":"Use this data source to list several existing monitors for use in other resources.","description_kind":"plain"}},"datadog_permissions":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"include_restricted":{"type":"bool","description":"Whether to include restricted permissions. Restricted permissions are granted by default to all users of a Datadog org, and cannot be manually granted or revoked. Defaults to `false`.","description_kind":"plain","optional":true},"permissions":{"type":["map","string"],"description":"Map of permissions names to their corresponding ID.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve the list of Datadog permissions by name and their corresponding ID, for use in the role resource.","description_kind":"plain"}},"datadog_role":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"A string on which to filter the roles.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role.","description_kind":"plain","computed":true},"user_count":{"type":"number","description":"Number of users assigned to this role.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing role for use in other resources.","description_kind":"plain"}},"datadog_roles":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"Filter all roles by the given string.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"roles":{"type":["list",["object",{"id":"string","name":"string","user_count":"number"}]],"description":"List of Roles","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about multiple roles for use in other resources.","description_kind":"plain"}},"datadog_rum_application":{"version":0,"block":{"attributes":{"client_token":{"type":"string","description":"The client token.","description_kind":"plain","computed":true},"id":{"type":"string","description":"ID of the RUM application. Cannot be used with name and type filters.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the RUM application.","description_kind":"plain","computed":true},"name_filter":{"type":"string","description":"The name used to search for a RUM application.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`.","description_kind":"plain","computed":true},"type_filter":{"type":"string","description":"The type used to search for a RUM application.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve a Datadog RUM Application.","description_kind":"plain"}},"datadog_security_monitoring_filters":{"version":0,"block":{"attributes":{"filters":{"type":["list",["object",{"exclusion_filter":["list",["object",{"name":"string","query":"string"}]],"filtered_data_type":"string","is_enabled":"bool","name":"string","query":"string","version":"number"}]],"description":"List of filters.","description_kind":"plain","computed":true},"filters_ids":{"type":["list","string"],"description":"List of IDs of filters.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to retrieve information about existing security monitoring filters for use in other resources.","description_kind":"plain"}},"datadog_security_monitoring_rules":{"version":0,"block":{"attributes":{"default_only_filter":{"type":"bool","description":"Limit the search to default rules","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name_filter":{"type":"string","description":"A rule name to limit the search","description_kind":"plain","optional":true},"rule_ids":{"type":["list","string"],"description":"List of IDs of the matched rules.","description_kind":"plain","computed":true},"rules":{"type":["list",["object",{"case":["list",["object",{"condition":"string","name":"string","notifications":["list","string"],"status":"string"}]],"enabled":"bool","filter":["list",["object",{"action":"string","query":"string"}]],"has_extended_title":"bool","message":"string","name":"string","options":["list",["object",{"decrease_criticality_based_on_env":"bool","detection_method":"string","evaluation_window":"number","impossible_travel_options":["list",["object",{"baseline_user_locations":"bool"}]],"keep_alive":"number","max_signal_duration":"number","new_value_options":["list",["object",{"forget_after":"number","learning_duration":"number","learning_method":"string","learning_threshold":"number"}]],"third_party_rule_options":["list",["object",{"default_notifications":["list","string"],"default_status":"string","root_query":["list",["object",{"group_by_fields":["list","string"],"query":"string"}]],"signal_title_template":"string"}]]}]],"query":["list",["object",{"agent_rule":["list",["object",{"agent_rule_id":"string","expression":"string"}]],"aggregation":"string","distinct_fields":["list","string"],"group_by_fields":["list","string"],"metric":"string","metrics":["list","string"],"name":"string","query":"string"}]],"signal_query":["list",["object",{"aggregation":"string","correlated_by_fields":["list","string"],"correlated_query_index":"string","default_rule_id":"string","name":"string","rule_id":"string"}]],"tags":["set","string"],"third_party_case":["list",["object",{"name":"string","notifications":["list","string"],"query":"string","status":"string"}]],"type":"string"}]],"description":"List of rules.","description_kind":"plain","computed":true},"tags_filter":{"type":["list","string"],"description":"A list of tags to limit the search","description_kind":"plain","optional":true},"user_only_filter":{"type":"bool","description":"Limit the search to user rules","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about existing security monitoring rules for use in other resources.","description_kind":"plain"}},"datadog_security_monitoring_suppressions":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"suppression_ids":{"type":["list","string"],"description":"List of IDs of suppressions","description_kind":"plain","computed":true},"suppressions":{"type":["list",["object",{"description":"string","enabled":"bool","expiration_date":"string","id":"string","name":"string","rule_query":"string","suppression_query":"string"}]],"description":"List of suppressions","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about existing suppression rules, and use them in other resources.","description_kind":"plain"}},"datadog_sensitive_data_scanner_group_order":{"version":0,"block":{"attributes":{"group_ids":{"type":["list","string"],"description":"The list of Sensitive Data Scanner group IDs, in order. Logs are tested against the query filter of each index one by one following the order of the list.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog Sensitive Data Scanner Group Order API data source. This can be used to retrieve the order of Datadog Sensitive Data Scanner Groups.","description_kind":"plain"}},"datadog_sensitive_data_scanner_standard_pattern":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"Filter all the Datadog standard patterns by name.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"included_keywords":{"type":["list","string"],"description":"List of recommended keywords to improve rule accuracy.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the standard pattern.","description_kind":"plain","computed":true},"pattern":{"type":"string","description":"Regex that the standard pattern applies.","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"List of tags.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing sensitive data scanner standard pattern.","description_kind":"plain"}},"datadog_service_account":{"version":0,"block":{"attributes":{"disabled":{"type":"bool","description":"Whether the user is disabled.","description_kind":"plain","computed":true},"email":{"type":"string","description":"Email of the user.","description_kind":"plain","computed":true},"filter":{"type":"string","description":"Filter all users and service accounts by name, email, or role.","description_kind":"plain","optional":true},"filter_status":{"type":"string","description":"Filter on status attribute. Comma separated list, with possible values `Active`, `Pending`, and `Disabled`.","description_kind":"plain","optional":true},"handle":{"type":"string","description":"Handle of the user.","description_kind":"plain","computed":true},"icon":{"type":"string","description":"URL of the user's icon.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The service account's ID.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the user.","description_kind":"plain","computed":true},"roles":{"type":["list","string"],"description":"Roles assigned to this service account.","description_kind":"plain","computed":true},"status":{"type":"string","description":"Status of the user.","description_kind":"plain","computed":true},"title":{"type":"string","description":"Title of the user.","description_kind":"plain","computed":true},"verified":{"type":"bool","description":"Whether the user is verified.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing Datadog service account.","description_kind":"plain"}},"datadog_service_level_objective":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"The description of the service level objective.","description_kind":"plain","computed":true},"id":{"type":"string","description":"A SLO ID to limit the search.","description_kind":"plain","optional":true},"metrics_query":{"type":"string","description":"Filter results based on SLO numerator and denominator.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the Datadog service level objective","description_kind":"plain","computed":true},"name_query":{"type":"string","description":"Filter results based on SLO names.","description_kind":"plain","optional":true},"query":{"type":["list",["object",{"denominator":"string","numerator":"string"}]],"description":"The metric query of good / total events","description_kind":"plain","computed":true},"tags_query":{"type":"string","description":"Filter results based on a single SLO tag.","description_kind":"plain","optional":true},"target_threshold":{"type":"number","description":"The primary target threshold of the service level objective.","description_kind":"plain","computed":true},"timeframe":{"type":"string","description":"The primary timeframe of the service level objective.","description_kind":"plain","computed":true},"type":{"type":"string","description":"The type of the service level objective. The mapping from these types to the types found in the Datadog Web UI can be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). Available values are: `metric` and `monitor`.","description_kind":"plain","computed":true},"warning_threshold":{"type":"number","description":"The primary warning threshold of the service level objective.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing SLO for use in other resources.","description_kind":"plain"}},"datadog_service_level_objectives":{"version":0,"block":{"attributes":{"error_on_empty_result":{"type":"bool","description":"Throw an error if no results are found. Defaults to `true`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ids":{"type":["list","string"],"description":"An array of SLO IDs to limit the search.","description_kind":"plain","optional":true},"metrics_query":{"type":"string","description":"Filter results based on SLO numerator and denominator.","description_kind":"plain","optional":true},"name_query":{"type":"string","description":"Filter results based on SLO names.","description_kind":"plain","optional":true},"query":{"type":"string","description":"The query string to filter results based on SLO names. Some examples of queries include service:\u003cservice-name\u003e and \u003cslo-name\u003e.","description_kind":"plain","optional":true},"slos":{"type":["list",["object",{"id":"string","name":"string","type":"string"}]],"description":"List of SLOs","description_kind":"plain","computed":true},"tags_query":{"type":"string","description":"Filter results based on a single SLO tag.","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about multiple SLOs for use in other resources.","description_kind":"plain"}},"datadog_synthetics_global_variable":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The synthetics global variable name to search for. Must only match one global variable.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"A list of tags assigned to the Synthetics global variable.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve a Datadog Synthetics global variable (to be used in Synthetics tests).","description_kind":"plain"}},"datadog_synthetics_locations":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"locations":{"type":["map","string"],"description":"A map of available Synthetics location IDs to names for Synthetics tests.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve Datadog's Synthetics Locations (to be used in Synthetics tests).","description_kind":"plain"}},"datadog_synthetics_test":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the synthetic test.","description_kind":"plain","computed":true},"tags":{"type":["list","string"],"description":"A list of tags assigned to the synthetic test.","description_kind":"plain","computed":true},"test_id":{"type":"string","description":"The synthetic test id or URL to search for","description_kind":"plain","required":true},"url":{"type":"string","description":"The start URL of the synthetic test.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve a Datadog Synthetic Test.","description_kind":"plain"}},"datadog_team":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Free-form markdown description/content for the team's homepage.","description_kind":"plain","computed":true},"filter_keyword":{"type":"string","description":"Search query. Can be team name, team handle, or email of team member.","description_kind":"plain","optional":true},"handle":{"type":"string","description":"The team's handle.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"link_count":{"type":"number","description":"The number of links belonging to the team.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the team.","description_kind":"plain","computed":true},"summary":{"type":"string","description":"A brief summary of the team, derived from the `description`.","description_kind":"plain","computed":true},"team_id":{"type":"string","description":"The team's identifier.","description_kind":"plain","optional":true,"computed":true},"user_count":{"type":"number","description":"The number of users belonging to the team.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing Datadog team.","description_kind":"plain"}},"datadog_team_memberships":{"version":0,"block":{"attributes":{"exact_match":{"type":"bool","description":"When true, `filter_keyword` string is exact matched against the user's `email`, followed by `name`.","description_kind":"plain","optional":true},"filter_keyword":{"type":"string","description":"Search query, can be user email or name.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"team_id":{"type":"string","description":"The team's identifier.","description_kind":"plain","required":true},"team_memberships":{"type":["list",["object",{"id":"string","role":"string","team_id":"string","user_id":"string"}]],"description":"List of team memberships.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about existing Datadog team memberships.","description_kind":"plain"}},"datadog_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"Email of the user.","description_kind":"plain","computed":true},"exact_match":{"type":"bool","description":"When true, `filter` string is exact matched against the user's `email`, followed by `name` attribute. Defaults to `false`.","description_kind":"plain","optional":true},"filter":{"type":"string","description":"Filter all users by the given string.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the user.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing user to use it in an other resources.","description_kind":"plain"}},"datadog_users":{"version":0,"block":{"attributes":{"filter":{"type":"string","description":"Filter all users by the given string.","description_kind":"plain","optional":true},"filter_status":{"type":"string","description":"Filter on status attribute. Comma-separated list with possible values of Active, Pending, and Disabled.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"users":{"type":["list",["object",{"email":"string","id":"string","name":"string"}]],"description":"List of users","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about existing users for use in other resources.","description_kind":"plain"}}}}}} diff --git a/config/securitymonitoring/config.go b/config/securitymonitoring/config.go new file mode 100644 index 0000000..5363c6b --- /dev/null +++ b/config/securitymonitoring/config.go @@ -0,0 +1,25 @@ +package securitymonitoring + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_security_monitoring_default_rule", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "DefaultRule" + r.ShortGroup = "securityMonitoring.datadog" + }) + p.AddResourceConfigurator("datadog_security_monitoring_filter", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "Filter" + r.ShortGroup = "securityMonitoring.datadog" + }) + p.AddResourceConfigurator("datadog_security_monitoring_rule", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "Rule" + r.ShortGroup = "securityMonitoring.datadog" + }) +} diff --git a/config/sensitivedatascanner/config.go b/config/sensitivedatascanner/config.go new file mode 100644 index 0000000..87f299e --- /dev/null +++ b/config/sensitivedatascanner/config.go @@ -0,0 +1,25 @@ +package sensitivedatascanner + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_sensitive_data_scanner_group", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "Group" + r.ShortGroup = "sensitiveDataScanner.datadog" + }) + p.AddResourceConfigurator("datadog_sensitive_data_scanner_group_order", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "GroupOrder" + r.ShortGroup = "sensitiveDataScanner.datadog" + }) + p.AddResourceConfigurator("datadog_sensitive_data_scanner_rule", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "Rule" + r.ShortGroup = "sensitiveDataScanner.datadog" + }) +} diff --git a/config/service/config.go b/config/service/config.go new file mode 100644 index 0000000..8e9abbf --- /dev/null +++ b/config/service/config.go @@ -0,0 +1,39 @@ +package service + +import "github.com/crossplane/upjet/pkg/config" + +const datadog = "datadog" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_service_account", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "ServiceAccount" + r.ShortGroup = datadog + }) + p.AddResourceConfigurator("datadog_service_account_application_key", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "ServiceAccountApplicationKey" + r.ShortGroup = datadog + }) + p.AddResourceConfigurator("datadog_service_definition_yaml", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "ServiceDefinitionYAML" + r.ShortGroup = datadog + }) + p.AddResourceConfigurator("datadog_service_level_objective", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "ServiceLevelObjective" + r.ShortGroup = datadog + }) + p.AddResourceConfigurator("datadog_slo_correction", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "SLOCorrection" + r.ShortGroup = datadog + }) +} diff --git a/config/spans/config.go b/config/spans/config.go new file mode 100644 index 0000000..332e3be --- /dev/null +++ b/config/spans/config.go @@ -0,0 +1,15 @@ +package spans + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_spans_metric", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "SpansMetric" + r.ShortGroup = "datadog" + r.SchemaElementOptions.SetEmbeddedObject("compute") + r.SchemaElementOptions.SetEmbeddedObject("filter") + }) +} diff --git a/config/synthetics/config.go b/config/synthetics/config.go new file mode 100644 index 0000000..4cb6ab4 --- /dev/null +++ b/config/synthetics/config.go @@ -0,0 +1,27 @@ +package synthetics + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_synthetics_concurrency_cap", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.ShortGroup = "synthetics.datadog" + }) + p.AddResourceConfigurator("datadog_synthetics_global_variable", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.ShortGroup = "synthetics.datadog" + }) + p.AddResourceConfigurator("datadog_synthetics_private_location", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.ShortGroup = "synthetics.datadog" + }) + p.AddResourceConfigurator("datadog_synthetics_test", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.ShortGroup = "synthetics.datadog" + }) +} diff --git a/config/team/config.go b/config/team/config.go new file mode 100644 index 0000000..df98322 --- /dev/null +++ b/config/team/config.go @@ -0,0 +1,30 @@ +package team + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_team", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.ShortGroup = "datadog" + }) + p.AddResourceConfigurator("datadog_team_link", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "TeamLink" + r.ShortGroup = "datadog" + }) + p.AddResourceConfigurator("datadog_team_membership", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "TeamMembership" + r.ShortGroup = "datadog" + }) + p.AddResourceConfigurator("datadog_team_permission_setting", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "TeamPermissionSetting" + r.ShortGroup = "datadog" + }) +} diff --git a/config/user/config.go b/config/user/config.go new file mode 100644 index 0000000..6faeaa5 --- /dev/null +++ b/config/user/config.go @@ -0,0 +1,12 @@ +package user + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_user", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.ShortGroup = "datadog" + }) +} diff --git a/config/webhook/config.go b/config/webhook/config.go new file mode 100644 index 0000000..656af1c --- /dev/null +++ b/config/webhook/config.go @@ -0,0 +1,19 @@ +package webhook + +import "github.com/crossplane/upjet/pkg/config" + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_webhook", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "Webhook" + r.ShortGroup = "datadog" + }) + p.AddResourceConfigurator("datadog_webhook_custom_variable", func(r *config.Resource) { + // We need to override the default group that upjet generated for + // this resource, which would be "datadog" + r.Kind = "WebhookCustomVariable" + r.ShortGroup = "datadog" + }) +} diff --git a/examples-generated/apm/v1alpha1/retentionfilter.yaml b/examples-generated/apm/v1alpha1/retentionfilter.yaml new file mode 100644 index 0000000..e77e31a --- /dev/null +++ b/examples-generated/apm/v1alpha1/retentionfilter.yaml @@ -0,0 +1,16 @@ +apiVersion: apm.datadog.upbound.io/v1alpha1 +kind: RetentionFilter +metadata: + annotations: + meta.upbound.io/example-id: apm/v1alpha1/retentionfilter + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + enabled: false + filter: + - query: '*' + filterType: spans-sampling-processor + name: Sample order + rate: "1.0" diff --git a/examples-generated/apm/v1alpha1/retentionfilterorder.yaml b/examples-generated/apm/v1alpha1/retentionfilterorder.yaml new file mode 100644 index 0000000..d4d1775 --- /dev/null +++ b/examples-generated/apm/v1alpha1/retentionfilterorder.yaml @@ -0,0 +1,31 @@ +apiVersion: apm.datadog.upbound.io/v1alpha1 +kind: RetentionFilterOrder +metadata: + annotations: + meta.upbound.io/example-id: apm/v1alpha1/retentionfilterorder + labels: + testing.upbound.io/example-name: bar + name: bar +spec: + forProvider: + filterIds: + - ${datadog_apm_retention_filter.foo.id} + +--- + +apiVersion: apm.datadog.upbound.io/v1alpha1 +kind: RetentionFilter +metadata: + annotations: + meta.upbound.io/example-id: apm.datadog/v1alpha1/retentionfilterorder + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + enabled: false + filter: + - query: '*' + filterType: spans-sampling-processor + name: Sample order + rate: "1.0" diff --git a/examples-generated/cloud/v1alpha1/configurationrule.yaml b/examples-generated/cloud/v1alpha1/configurationrule.yaml new file mode 100644 index 0000000..6089e53 --- /dev/null +++ b/examples-generated/cloud/v1alpha1/configurationrule.yaml @@ -0,0 +1,47 @@ +apiVersion: cloud.datadog.upbound.io/v1alpha1 +kind: ConfigurationRule +metadata: + annotations: + meta.upbound.io/example-id: cloud/v1alpha1/configurationrule + labels: + testing.upbound.io/example-name: myrule + name: myrule +spec: + forProvider: + enabled: true + groupBy: + - '@resource' + message: Rule has triggered + name: My cloud configuration rule + notifications: + - '@channel' + policy: | + package datadog + + import data.datadog.output as dd_output + + import future.keywords.contains + import future.keywords.if + import future.keywords.in + + eval(resource) = "skip" if { + # Logic that evaluates to true if the resource should be skipped + true + } else = "pass" { + # Logic that evaluates to true if the resource is compliant + true + } else = "fail" { + # Logic that evaluates to true if the resource is not compliant + true + } + + # This part remains unchanged for all rules + results contains result if { + some resource in input.resources[input.main_resource_type] + result := dd_output.format(resource, eval(resource)) + } + relatedResourceTypes: [] + resourceType: aws_s3_bucket + severity: high + tags: + - some:tag diff --git a/examples-generated/cloud/v1alpha1/workloadsecurityagentrule.yaml b/examples-generated/cloud/v1alpha1/workloadsecurityagentrule.yaml new file mode 100644 index 0000000..9f459c5 --- /dev/null +++ b/examples-generated/cloud/v1alpha1/workloadsecurityagentrule.yaml @@ -0,0 +1,14 @@ +apiVersion: cloud.datadog.upbound.io/v1alpha1 +kind: WorkloadSecurityAgentRule +metadata: + annotations: + meta.upbound.io/example-id: cloud/v1alpha1/workloadsecurityagentrule + labels: + testing.upbound.io/example-name: my_agent_rule + name: my-agent-rule +spec: + forProvider: + description: My agent rule + enabled: true + expression: exec.file.name == "java" + name: my_agent_rule diff --git a/examples-generated/datadog/v1alpha1/apikey.yaml b/examples-generated/datadog/v1alpha1/apikey.yaml new file mode 100644 index 0000000..653e5eb --- /dev/null +++ b/examples-generated/datadog/v1alpha1/apikey.yaml @@ -0,0 +1,11 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: APIKey +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/apikey + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: foo-application diff --git a/examples-generated/datadog/v1alpha1/appkey.yaml b/examples-generated/datadog/v1alpha1/appkey.yaml new file mode 100644 index 0000000..54d6428 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/appkey.yaml @@ -0,0 +1,11 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: AppKey +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/appkey + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: foo-application diff --git a/examples-generated/datadog/v1alpha1/authnmapping.yaml b/examples-generated/datadog/v1alpha1/authnmapping.yaml new file mode 100644 index 0000000..0ecabbf --- /dev/null +++ b/examples-generated/datadog/v1alpha1/authnmapping.yaml @@ -0,0 +1,13 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: AuthnMapping +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/authnmapping + labels: + testing.upbound.io/example-name: dev_ro_role_mapping + name: dev-ro-role-mapping +spec: + forProvider: + key: Member-of + role: ${data.datadog_role.ro_role.id} + value: Development diff --git a/examples-generated/datadog/v1alpha1/childorganization.yaml b/examples-generated/datadog/v1alpha1/childorganization.yaml new file mode 100644 index 0000000..b8117a6 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/childorganization.yaml @@ -0,0 +1,11 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ChildOrganization +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/childorganization + labels: + testing.upbound.io/example-name: organization + name: organization +spec: + forProvider: + name: foo-organization diff --git a/examples-generated/datadog/v1alpha1/dashboardjson.yaml b/examples-generated/datadog/v1alpha1/dashboardjson.yaml new file mode 100644 index 0000000..3dbe387 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/dashboardjson.yaml @@ -0,0 +1,496 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: DashboardJSON +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/dashboardjson + labels: + testing.upbound.io/example-name: dashboard_json + name: dashboard-json +spec: + forProvider: + dashboard: | + { + "title":"Ordered Layout Dashboard", + "description":"Created using the Datadog provider in Terraform", + "widgets":[ + { + "id":719369537777170, + "definition":{ + "title":"Widget Title", + "type":"alert_graph", + "alert_id":"895605", + "viz_type":"timeseries" + } + }, + { + "id":2306240030393868, + "definition":{ + "title":"Widget Title", + "type":"alert_value", + "alert_id":"895605", + "unit":"b", + "text_align":"center", + "precision":3 + } + }, + { + "id":6990998850881326, + "definition":{ + "title":"Widget Title", + "type":"alert_value", + "alert_id":"895605", + "unit":"b", + "text_align":"center", + "precision":3 + } + }, + { + "id":3351284044659007, + "definition":{ + "title":"Widget Title", + "type":"change", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "compare_to":"week_before", + "change_type":"absolute", + "order_dir":"desc", + "increase_good":true, + "order_by":"name", + "show_present":true + } + ] + } + }, + { + "id":6450290622996182, + "definition":{ + "title":"Widget Title", + "show_legend":false, + "type":"distribution", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "style":{ + "palette":"warm" + } + } + ] + } + }, + { + "id":4902842646291536, + "definition":{ + "title":"Widget Title", + "type":"check_status", + "check":"aws.ecs.agent_connected", + "grouping":"cluster", + "group_by":[ + "account", + "cluster" + ], + "tags":[ + "account:demo", + "cluster:awseb-ruthebdog-env-8-dn3m6u3gvk" + ] + } + }, + { + "id":6392349954822644, + "definition":{ + "title":"Widget Title", + "show_legend":false, + "type":"heatmap", + "yaxis":{ + "scale":"sqrt", + "include_zero":true, + "min":"1", + "max":"2" + }, + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "style":{ + "palette":"warm" + } + } + ] + } + }, + { + "id":5222961478940988, + "definition":{ + "title":"Widget Title", + "type":"hostmap", + "requests":{ + "fill":{ + "q":"avg:system.load.1{*} by {host}" + }, + "size":{ + "q":"avg:memcache.uptime{*} by {host}" + } + }, + "node_type":"container", + "no_metric_hosts":true, + "no_group_hosts":true, + "group":[ + "host", + "region" + ], + "scope":[ + "region:us-east-1", + "aws_account:727006795293" + ], + "style":{ + "palette":"yellow_to_green", + "palette_flip":true, + "fill_min":"10", + "fill_max":"20" + } + } + }, + { + "id":8121199734227072, + "definition":{ + "type":"note", + "content":"note text", + "background_color":"pink", + "font_size":"14", + "text_align":"center", + "show_tick":true, + "tick_pos":"50%", + "tick_edge":"left" + } + }, + { + "id":1775856835833038, + "definition":{ + "title":"Widget Title", + "type":"query_value", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "aggregator":"sum", + "conditional_formats":[ + { + "hide_value":false, + "comparator":"<", + "palette":"white_on_green", + "value":2 + }, + { + "hide_value":false, + "comparator":">", + "palette":"white_on_red", + "value":2.2 + } + ] + } + ], + "autoscale":true, + "custom_unit":"xx", + "text_align":"right", + "precision":4 + } + }, + { + "id":8461455966625581, + "definition":{ + "title":"Widget Title", + "type":"query_table", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "aggregator":"sum", + "conditional_formats":[ + { + "hide_value":false, + "comparator":"<", + "palette":"white_on_green", + "value":2 + }, + { + "hide_value":false, + "comparator":">", + "palette":"white_on_red", + "value":2.2 + } + ], + "limit":10 + } + ] + } + }, + { + "id":8660006349418736, + "definition":{ + "title":"Widget Title", + "type":"scatterplot", + "requests":{ + "x":{ + "q":"avg:system.cpu.user{*} by {service, account}", + "aggregator":"max" + }, + "y":{ + "q":"avg:system.mem.used{*} by {service, account}", + "aggregator":"min" + } + }, + "xaxis":{ + "scale":"pow", + "label":"x", + "include_zero":true, + "min":"1", + "max":"2000" + }, + "yaxis":{ + "scale":"log", + "label":"y", + "include_zero":false, + "min":"5", + "max":"2222" + }, + "color_by_groups":[ + "account", + "apm-role-group" + ] + } + }, + { + "id":1669590772917638, + "definition":{ + "title":"env: prod, datacenter:dc1, service: master-db", + "title_size":"16", + "title_align":"left", + "type":"servicemap", + "service":"master-db", + "filters":[ + "env:prod", + "datacenter:dc1" + ] + } + }, + { + "id":2138829058361817, + "definition":{ + "title":"Widget Title", + "show_legend":true, + "legend_size":"2", + "type":"timeseries", + "requests":[ + { + "q":"avg:system.cpu.user{app:general} by {env}", + "on_right_yaxis":false, + "metadata":[ + { + "expression":"avg:system.cpu.user{app:general} by {env}", + "alias_name":"Alpha" + } + ], + "style":{ + "palette":"warm", + "line_type":"dashed", + "line_width":"thin" + }, + "display_type":"line" + }, + { + "on_right_yaxis":false, + "log_query":{ + "index":"mcnulty", + "search":{ + "query":"status:info" + }, + "group_by":[ + { + "facet":"host", + "sort":{ + "facet":"@duration", + "aggregation":"avg", + "order":"desc" + }, + "limit":10 + } + ], + "compute":{ + "facet":"@duration", + "interval":5000, + "aggregation":"avg" + } + }, + "display_type":"area" + }, + { + "on_right_yaxis":false, + "apm_query":{ + "index":"apm-search", + "search":{ + "query":"type:web" + }, + "group_by":[ + { + "facet":"resource_name", + "sort":{ + "facet":"@string_query.interval", + "aggregation":"avg", + "order":"desc" + }, + "limit":50 + } + ], + "compute":{ + "facet":"@duration", + "interval":5000, + "aggregation":"avg" + } + }, + "display_type":"bars" + }, + { + "on_right_yaxis":false, + "process_query":{ + "search_by":"error", + "metric":"process.stat.cpu.total_pct", + "limit":50, + "filter_by":[ + "active" + ] + }, + "display_type":"area" + } + ], + "yaxis":{ + "scale":"log", + "include_zero":false, + "max":"100" + }, + "events":[ + { + "q":"sources:test tags:1" + }, + { + "q":"sources:test tags:2" + } + ], + "markers":[ + { + "label":" z=6 ", + "value":"y = 4", + "display_type":"error dashed" + }, + { + "label":" x=8 ", + "value":"10 < y < 999", + "display_type":"ok solid" + } + ] + } + }, + { + "id":7307171374656551, + "definition":{ + "title":"Widget Title", + "type":"toplist", + "requests":[ + { + "q":"avg:system.cpu.user{app:general} by {env}", + "conditional_formats":[ + { + "hide_value":false, + "comparator":"<", + "palette":"white_on_green", + "value":2 + }, + { + "hide_value":false, + "comparator":">", + "palette":"white_on_red", + "value":2.2 + } + ] + } + ] + } + }, + { + "id":7086674838553258, + "definition":{ + "title":"Group Widget", + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":3726092277657502, + "definition":{ + "type":"note", + "content":"cluster note widget", + "background_color":"pink", + "font_size":"14", + "text_align":"center", + "show_tick":true, + "tick_pos":"50%", + "tick_edge":"left" + } + }, + { + "id":6376384650558057, + "definition":{ + "title":"Alert Graph", + "type":"alert_graph", + "alert_id":"123", + "viz_type":"toplist" + } + } + ] + } + }, + { + "id":4668903563678912, + "definition":{ + "title":"Widget Title", + "type":"slo", + "view_type":"detail", + "time_windows":[ + "7d", + "previous_week" + ], + "slo_id":"56789", + "show_error_budget":true, + "view_mode":"overall", + "global_time_target":"0" + } + } + ], + "template_variables":[ + { + "name":"var_1", + "default":"aws", + "prefix":"host" + }, + { + "name":"var_2", + "default":"autoscaling", + "prefix":"service_name" + } + ], + "layout_type":"ordered", + "is_read_only":true, + "notify_list":[ + + ], + "template_variable_presets":[ + { + "name":"preset_1", + "template_variables":[ + { + "name":"var_1", + "value":"host.dc" + }, + { + "name":"var_2", + "value":"my_service" + } + ] + } + ] + } diff --git a/examples-generated/datadog/v1alpha1/dashboardlist.yaml b/examples-generated/datadog/v1alpha1/dashboardlist.yaml new file mode 100644 index 0000000..8187a44 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/dashboardlist.yaml @@ -0,0 +1,16 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: DashboardList +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/dashboardlist + labels: + testing.upbound.io/example-name: new_list + name: new-list +spec: + forProvider: + dashItem: + - dashId: ${datadog_dashboard.time.id} + type: custom_timeboard + - dashId: ${datadog_dashboard.screen.id} + type: custom_screenboard + name: Terraform Created List diff --git a/examples-generated/datadog/v1alpha1/downtime.yaml b/examples-generated/datadog/v1alpha1/downtime.yaml new file mode 100644 index 0000000..72f9a83 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/downtime.yaml @@ -0,0 +1,18 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Downtime +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/downtime + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + end: 1483365600 + monitorId: 12345 + recurrence: + - period: 1 + type: days + scope: + - '*' + start: 1483308000 diff --git a/examples-generated/datadog/v1alpha1/downtimeschedule.yaml b/examples-generated/datadog/v1alpha1/downtimeschedule.yaml new file mode 100644 index 0000000..6a35fba --- /dev/null +++ b/examples-generated/datadog/v1alpha1/downtimeschedule.yaml @@ -0,0 +1,24 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: DowntimeSchedule +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/downtimeschedule + labels: + testing.upbound.io/example-name: downtime_schedule_example + name: downtime-schedule-example +spec: + forProvider: + displayTimezone: America/New_York + message: Message about the downtime + monitorIdentifier: + - monitorTags: + - test:123 + - data:test + muteFirstRecoveryNotification: true + notifyEndStates: + - alert + - warn + notifyEndTypes: + - canceled + - expired + scope: env:us9-prod7 AND team:test123 diff --git a/examples-generated/datadog/v1alpha1/monitor.yaml b/examples-generated/datadog/v1alpha1/monitor.yaml new file mode 100644 index 0000000..0aafca1 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/monitor.yaml @@ -0,0 +1,22 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Monitor +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/monitor + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + escalationMessage: Escalation message @pagerduty + includeTags: true + message: 'Monitor triggered. Notify: @hipchat-channel' + monitorThresholds: + - critical: 4 + warning: 2 + name: Name for monitor foo + query: avg(last_1h):avg:aws.ec2.cpu{environment:foo,host:foo} by {host} > 4 + tags: + - foo:bar + - team:fooBar + type: metric alert diff --git a/examples-generated/datadog/v1alpha1/monitorconfigpolicy.yaml b/examples-generated/datadog/v1alpha1/monitorconfigpolicy.yaml new file mode 100644 index 0000000..1639195 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/monitorconfigpolicy.yaml @@ -0,0 +1,17 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: MonitorConfigPolicy +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/monitorconfigpolicy + labels: + testing.upbound.io/example-name: test + name: test +spec: + forProvider: + policyType: tag + tagPolicy: + - tagKey: env + tagKeyRequired: false + validTagValues: + - staging + - prod diff --git a/examples-generated/datadog/v1alpha1/monitorjson.yaml b/examples-generated/datadog/v1alpha1/monitorjson.yaml new file mode 100644 index 0000000..014b002 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/monitorjson.yaml @@ -0,0 +1,21 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: MonitorJSON +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/monitorjson + labels: + testing.upbound.io/example-name: monitor_json + name: monitor-json +spec: + forProvider: + monitor: "{\n \"name\": \"Example monitor - service check\",\n \"type\": + \"service check\",\n \"query\": \"\\\"ntp.in_sync\\\".by(\\\"*\\\").last(2).count_by_status()\",\n + \ \"message\": \"Change the message triggers if any host's clock goes out + of sync with the time given by NTP. The offset threshold is configured in the + Agent's 'ntp.yaml' file.\\n\\nSee [Troubleshooting NTP Offset issues](https://docs.datadoghq.com/agent/troubleshooting/ntp + for more details on cause and resolution.\",\n \"tags\": [],\n \"multi\": + true,\n\t\"restricted_roles\": null,\n \"options\": {\n \"include_tags\": + true,\n \"locked\": false,\n \"new_host_delay\": 150,\n \"notify_audit\": + false,\n \"notify_no_data\": false,\n \"thresholds\": {\n \"warning\": + 1,\n \"ok\": 1,\n \"critical\": 1\n }\n },\n + \ \"priority\": null,\n \"classification\": \"custom\"\n}\n" diff --git a/examples-generated/datadog/v1alpha1/organizationsettings.yaml b/examples-generated/datadog/v1alpha1/organizationsettings.yaml new file mode 100644 index 0000000..927e086 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/organizationsettings.yaml @@ -0,0 +1,11 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: OrganizationSettings +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/organizationsettings + labels: + testing.upbound.io/example-name: organization + name: organization +spec: + forProvider: + name: foo-organization diff --git a/examples-generated/datadog/v1alpha1/powerpack.yaml b/examples-generated/datadog/v1alpha1/powerpack.yaml new file mode 100644 index 0000000..8b5029b --- /dev/null +++ b/examples-generated/datadog/v1alpha1/powerpack.yaml @@ -0,0 +1,42 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Powerpack +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/powerpack + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + description: Created using the Datadog provider in terraform + layout: + - height: 10 + width: 3 + x: 1 + "y": 0 + liveSpan: 4h + templateVariables: + - defaults: + - defaults + name: datacenter + widget: + - event_stream_definition: + - event_size: l + query: '*' + title: Widget Title + title_align: right + title_size: 16 + +--- + +apiVersion: datadog.upbound.io/v1alpha1 +kind: OrganizationSettings +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/powerpack + labels: + testing.upbound.io/example-name: organization + name: organization +spec: + forProvider: + name: foo-organization diff --git a/examples-generated/datadog/v1alpha1/restrictionpolicy.yaml b/examples-generated/datadog/v1alpha1/restrictionpolicy.yaml new file mode 100644 index 0000000..90298d2 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/restrictionpolicy.yaml @@ -0,0 +1,18 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: RestrictionPolicy +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/restrictionpolicy + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + bindings: + - principals: + - role:00000000-0000-1111-0000-000000000000 + relation: editor + - principals: + - org:10000000-0000-1111-0000-000000000000 + relation: viewer + resourceId: security-rule:abc-def-ghi diff --git a/examples-generated/datadog/v1alpha1/role.yaml b/examples-generated/datadog/v1alpha1/role.yaml new file mode 100644 index 0000000..3764114 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/role.yaml @@ -0,0 +1,14 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Role +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/role + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: foo + permission: + - id: ${data.datadog_permissions.bar.permissions.monitors_downtime} + - id: ${data.datadog_permissions.bar.permissions.monitors_write} diff --git a/examples-generated/datadog/v1alpha1/rumapplication.yaml b/examples-generated/datadog/v1alpha1/rumapplication.yaml new file mode 100644 index 0000000..1beb8eb --- /dev/null +++ b/examples-generated/datadog/v1alpha1/rumapplication.yaml @@ -0,0 +1,12 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: RUMApplication +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/rumapplication + labels: + testing.upbound.io/example-name: rum_application + name: rum-application +spec: + forProvider: + name: my-application + type: browser diff --git a/examples-generated/datadog/v1alpha1/serviceaccount.yaml b/examples-generated/datadog/v1alpha1/serviceaccount.yaml new file mode 100644 index 0000000..88a1493 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/serviceaccount.yaml @@ -0,0 +1,14 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceAccount +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/serviceaccount + labels: + testing.upbound.io/example-name: bar + name: bar +spec: + forProvider: + email: new@example.com + name: Service Account Bar + roles: + - ${data.datadog_role.ro_role.id} diff --git a/examples-generated/datadog/v1alpha1/serviceaccountapplicationkey.yaml b/examples-generated/datadog/v1alpha1/serviceaccountapplicationkey.yaml new file mode 100644 index 0000000..8830b62 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/serviceaccountapplicationkey.yaml @@ -0,0 +1,12 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceAccountApplicationKey +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/serviceaccountapplicationkey + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: Application key for managing dashboards + serviceAccountId: 00000000-0000-1234-0000-000000000000 diff --git a/examples-generated/datadog/v1alpha1/servicedefinitionyaml.yaml b/examples-generated/datadog/v1alpha1/servicedefinitionyaml.yaml new file mode 100644 index 0000000..d3bda82 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/servicedefinitionyaml.yaml @@ -0,0 +1,24 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceDefinitionYAML +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/servicedefinitionyaml + labels: + testing.upbound.io/example-name: service_definition_v2_2 + name: service-definition-v2-2 +spec: + forProvider: + serviceDefinition: "schema-version: v2.2\ndd-service: shopping-cart\nteam: e-commerce-team\ncontacts:\n + \ - name: Support Email\n type: email\n contact: team@shopping.com\n - + name: Support Slack\n type: slack\n contact: https://www.slack.com/archives/shopping-cart\ndescription: + shopping cart service responsible for managing shopping carts\ntier: high\nlifecycle: + production\napplication: e-commerce\nlanguages: \n - go\n - python\ntype: + web \nci-pipeline-fingerprints:\n - fp1 \n - fp2 \nlinks:\n - name: shopping-cart + runbook\n type: runbook\n url: https://runbook/shopping-cart\n - name: + shopping-cart architecture\n type: doc\n provider: gdoc\n url: https://google.drive/shopping-cart-architecture\n + \ - name: shopping-cart service Wiki\n type: doc\n provider: wiki\n url: + https://wiki/shopping-cart\n - name: shopping-cart source code\n type: repo\n + \ provider: github\n url: http://github/shopping-cart\ntags:\n - business-unit:retail\n + \ - cost-center:engineering\nintegrations:\n pagerduty: \n service-url: + https://www.pagerduty.com/service-directory/Pshopping-cart\nextensions:\n mycompany.com/shopping-cart:\n + \ customField: customValue\n" diff --git a/examples-generated/datadog/v1alpha1/servicelevelobjective.yaml b/examples-generated/datadog/v1alpha1/servicelevelobjective.yaml new file mode 100644 index 0000000..a0b0dbf --- /dev/null +++ b/examples-generated/datadog/v1alpha1/servicelevelobjective.yaml @@ -0,0 +1,29 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceLevelObjective +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/servicelevelobjective + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + description: My custom metric SLO + name: Example Metric SLO + query: + - denominator: sum:my.custom.count.metric{*}.as_count() + numerator: sum:my.custom.count.metric{type:good_events}.as_count() + tags: + - foo:bar + - baz + targetThreshold: 99.9 + thresholds: + - target: 99.9 + timeframe: 7d + warning: 99.99 + - target: 99.9 + timeframe: 30d + warning: 99.99 + timeframe: 30d + type: metric + warningThreshold: 99.99 diff --git a/examples-generated/datadog/v1alpha1/slocorrection.yaml b/examples-generated/datadog/v1alpha1/slocorrection.yaml new file mode 100644 index 0000000..4c15881 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/slocorrection.yaml @@ -0,0 +1,41 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: SLOCorrection +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/slocorrection + labels: + testing.upbound.io/example-name: example_slo_correction + name: example-slo-correction +spec: + forProvider: + category: Scheduled Maintenance + description: correction example + end: 1735718600 + sloId: ${datadog_service_level_objective.example_slo.id} + start: 1735707000 + timezone: UTC + +--- + +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceLevelObjective +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/slocorrection + labels: + testing.upbound.io/example-name: example_slo + name: example-slo +spec: + forProvider: + description: some updated description about example_slo SLO + name: example slo + query: + - denominator: sum:my.metric{type:good}.as_count() + sum:my.metric{type:bad}.as_count() + numerator: sum:my.metric{type:good}.as_count() + tags: + - foo:bar + thresholds: + - target: 99.5 + timeframe: 7d + warning: 99.8 + type: metric diff --git a/examples-generated/datadog/v1alpha1/spansmetric.yaml b/examples-generated/datadog/v1alpha1/spansmetric.yaml new file mode 100644 index 0000000..c0669b9 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/spansmetric.yaml @@ -0,0 +1,16 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: SpansMetric +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/spansmetric + labels: + testing.upbound.io/example-name: testing_spans_metric + name: testing-spans-metric +spec: + forProvider: + filter: + - query: '@http.status_code:200 service:my-service' + groupBy: + - path: resource_name + tagName: resource_name + name: testing.span.metric diff --git a/examples-generated/datadog/v1alpha1/team.yaml b/examples-generated/datadog/v1alpha1/team.yaml new file mode 100644 index 0000000..c8cc0fc --- /dev/null +++ b/examples-generated/datadog/v1alpha1/team.yaml @@ -0,0 +1,13 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/team + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + description: Team description + handle: example-team + name: Example Team diff --git a/examples-generated/datadog/v1alpha1/teamlink.yaml b/examples-generated/datadog/v1alpha1/teamlink.yaml new file mode 100644 index 0000000..30a22f1 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/teamlink.yaml @@ -0,0 +1,30 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: TeamLink +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teamlink + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + label: Link label + position: Example link + teamId: ${datadog_team.foo.id} + url: https://example.com + +--- + +apiVersion: datadog.upbound.io/v1alpha1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teamlink + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + description: Example team + handle: example-team-updated + name: Example Team-updated diff --git a/examples-generated/datadog/v1alpha1/teammembership.yaml b/examples-generated/datadog/v1alpha1/teammembership.yaml new file mode 100644 index 0000000..88eae96 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/teammembership.yaml @@ -0,0 +1,43 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: TeamMembership +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teammembership + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + role: admin + teamId: ${datadog_team.foo.id} + userId: ${datadog_user.foo.id} + +--- + +apiVersion: datadog.upbound.io/v1alpha1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teammembership + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + description: Example team + handle: example-team-updated + name: Example Team-updated + +--- + +apiVersion: datadog.upbound.io/v1alpha1 +kind: User +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teammembership + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + email: new@example.com diff --git a/examples-generated/datadog/v1alpha1/teampermissionsetting.yaml b/examples-generated/datadog/v1alpha1/teampermissionsetting.yaml new file mode 100644 index 0000000..f015203 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/teampermissionsetting.yaml @@ -0,0 +1,29 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: TeamPermissionSetting +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teampermissionsetting + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + action: manage_membership + teamId: ${datadog_team.foo.id} + value: organization + +--- + +apiVersion: datadog.upbound.io/v1alpha1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teampermissionsetting + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + description: Example team + handle: example-team-updated + name: Example Team-updated diff --git a/examples-generated/datadog/v1alpha1/user.yaml b/examples-generated/datadog/v1alpha1/user.yaml new file mode 100644 index 0000000..6ae56a8 --- /dev/null +++ b/examples-generated/datadog/v1alpha1/user.yaml @@ -0,0 +1,13 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: User +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/user + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + email: new@example.com + roles: + - ${data.datadog_role.ro_role.id} diff --git a/examples-generated/datadog/v1alpha1/webhook.yaml b/examples-generated/datadog/v1alpha1/webhook.yaml new file mode 100644 index 0000000..3dfb5dd --- /dev/null +++ b/examples-generated/datadog/v1alpha1/webhook.yaml @@ -0,0 +1,15 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Webhook +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/webhook + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + customHeaders: '${jsonencode({ "custom" : "header" })}' + encodeAs: json + name: test-webhook + payload: '${jsonencode({ "custom" : "payload" })}' + url: example.com diff --git a/examples-generated/datadog/v1alpha1/webhookcustomvariable.yaml b/examples-generated/datadog/v1alpha1/webhookcustomvariable.yaml new file mode 100644 index 0000000..b775cdd --- /dev/null +++ b/examples-generated/datadog/v1alpha1/webhookcustomvariable.yaml @@ -0,0 +1,16 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: WebhookCustomVariable +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/webhookcustomvariable + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + isSecret: true + name: EXAMPLE_VARIABLE + valueSecretRef: + key: example-key + name: example-secret + namespace: upbound-system diff --git a/examples-generated/integration/v1alpha1/aws.yaml b/examples-generated/integration/v1alpha1/aws.yaml new file mode 100644 index 0000000..39a6df4 --- /dev/null +++ b/examples-generated/integration/v1alpha1/aws.yaml @@ -0,0 +1,23 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: AWS +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/aws + labels: + testing.upbound.io/example-name: sandbox + name: sandbox +spec: + forProvider: + accountId: "1234567890" + accountSpecificNamespaceRules: + auto_scaling: false + opsworks: false + excludedRegions: + - us-east-1 + - us-west-2 + filterTags: + - key:value + hostTags: + - key:value + - key2:value2 + roleName: DatadogAWSIntegrationRole diff --git a/examples-generated/integration/v1alpha1/awseventbridge.yaml b/examples-generated/integration/v1alpha1/awseventbridge.yaml new file mode 100644 index 0000000..0d5904a --- /dev/null +++ b/examples-generated/integration/v1alpha1/awseventbridge.yaml @@ -0,0 +1,14 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: AWSEventBridge +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/awseventbridge + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: "123456789012" + createEventBus: true + eventGeneratorName: app-alerts + region: us-east-1 diff --git a/examples-generated/integration/v1alpha1/awslambdaarn.yaml b/examples-generated/integration/v1alpha1/awslambdaarn.yaml new file mode 100644 index 0000000..10ca2a6 --- /dev/null +++ b/examples-generated/integration/v1alpha1/awslambdaarn.yaml @@ -0,0 +1,12 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: AWSLambdaARN +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/awslambdaarn + labels: + testing.upbound.io/example-name: main_collector + name: main-collector +spec: + forProvider: + accountId: "1234567890" + lambdaArn: arn:aws:lambda:us-east-1:1234567890:function:datadog-forwarder-Forwarder diff --git a/examples-generated/integration/v1alpha1/awslogcollection.yaml b/examples-generated/integration/v1alpha1/awslogcollection.yaml new file mode 100644 index 0000000..35cd7be --- /dev/null +++ b/examples-generated/integration/v1alpha1/awslogcollection.yaml @@ -0,0 +1,13 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: AWSLogCollection +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/awslogcollection + labels: + testing.upbound.io/example-name: main + name: main +spec: + forProvider: + accountId: "1234567890" + services: + - lambda diff --git a/examples-generated/integration/v1alpha1/awstagfilter.yaml b/examples-generated/integration/v1alpha1/awstagfilter.yaml new file mode 100644 index 0000000..c13514b --- /dev/null +++ b/examples-generated/integration/v1alpha1/awstagfilter.yaml @@ -0,0 +1,13 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: AWSTagFilter +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/awstagfilter + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: "123456789010" + namespace: sqs + tagFilterStr: key:value diff --git a/examples-generated/integration/v1alpha1/azure.yaml b/examples-generated/integration/v1alpha1/azure.yaml new file mode 100644 index 0000000..3cd1c4d --- /dev/null +++ b/examples-generated/integration/v1alpha1/azure.yaml @@ -0,0 +1,22 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: Azure +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/azure + labels: + testing.upbound.io/example-name: sandbox + name: sandbox +spec: + forProvider: + appServicePlanFilters: examplefilter:true,example:another + automute: true + clientId: + clientSecretSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + containerAppFilters: examplefilter:true,example:one_more + cspmEnabled: true + customMetricsEnabled: false + hostFilters: examplefilter:true,example:true + tenantName: diff --git a/examples-generated/integration/v1alpha1/cloudflareaccount.yaml b/examples-generated/integration/v1alpha1/cloudflareaccount.yaml new file mode 100644 index 0000000..a035141 --- /dev/null +++ b/examples-generated/integration/v1alpha1/cloudflareaccount.yaml @@ -0,0 +1,16 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: CloudflareAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/cloudflareaccount + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + email: test-email@example.com + name: test-name diff --git a/examples-generated/integration/v1alpha1/confluentaccount.yaml b/examples-generated/integration/v1alpha1/confluentaccount.yaml new file mode 100644 index 0000000..bb13390 --- /dev/null +++ b/examples-generated/integration/v1alpha1/confluentaccount.yaml @@ -0,0 +1,18 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: ConfluentAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/confluentaccount + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: TESTAPIKEY123 + apiSecretSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + tags: + - mytag + - mytag2:myvalue diff --git a/examples-generated/integration/v1alpha1/confluentresource.yaml b/examples-generated/integration/v1alpha1/confluentresource.yaml new file mode 100644 index 0000000..b6879a6 --- /dev/null +++ b/examples-generated/integration/v1alpha1/confluentresource.yaml @@ -0,0 +1,37 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: ConfluentResource +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/confluentresource + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: ${datadog_integration_confluent_account.foo.id} + resourceId: "123456" + resourceType: kafka + tags: + - mytag + - mytag2:myvalue + +--- + +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: ConfluentAccount +metadata: + annotations: + meta.upbound.io/example-id: integration.datadog/v1alpha1/confluentresource + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: TESTAPIKEY123 + apiSecretSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + tags: + - mytag + - mytag2:myvalue diff --git a/examples-generated/integration/v1alpha1/fastlyaccount.yaml b/examples-generated/integration/v1alpha1/fastlyaccount.yaml new file mode 100644 index 0000000..22d63c5 --- /dev/null +++ b/examples-generated/integration/v1alpha1/fastlyaccount.yaml @@ -0,0 +1,12 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: FastlyAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/fastlyaccount + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: ABCDEFG123 + name: test-name diff --git a/examples-generated/integration/v1alpha1/fastlyservice.yaml b/examples-generated/integration/v1alpha1/fastlyservice.yaml new file mode 100644 index 0000000..cf250ff --- /dev/null +++ b/examples-generated/integration/v1alpha1/fastlyservice.yaml @@ -0,0 +1,30 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: FastlyService +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/fastlyservice + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: ${datadog_integration_fastly_account.foo.id} + serviceId: my-service-id + tags: + - mytag + - mytag2:myvalue + +--- + +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: FastlyAccount +metadata: + annotations: + meta.upbound.io/example-id: integration.datadog/v1alpha1/fastlyservice + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: ABCDEFG123 + name: test-name diff --git a/examples-generated/integration/v1alpha1/gcp.yaml b/examples-generated/integration/v1alpha1/gcp.yaml new file mode 100644 index 0000000..074de19 --- /dev/null +++ b/examples-generated/integration/v1alpha1/gcp.yaml @@ -0,0 +1,19 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: GCP +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/gcp + labels: + testing.upbound.io/example-name: awesome_gcp_project_integration + name: awesome-gcp-project-integration +spec: + forProvider: + clientEmail: awesome-service-account@awesome-project-id.iam.gserviceaccount.com + clientId: "123456789012345678901" + hostFilters: foo:bar,buzz:lightyear + privateKeyId: "1234567890123456789012345678901234567890" + privateKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + projectId: awesome-project-id diff --git a/examples-generated/integration/v1alpha1/gcpsts.yaml b/examples-generated/integration/v1alpha1/gcpsts.yaml new file mode 100644 index 0000000..d1426a4 --- /dev/null +++ b/examples-generated/integration/v1alpha1/gcpsts.yaml @@ -0,0 +1,16 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: GCPSTS +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/gcpsts + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + automute: true + clientEmail: ${google_service_account.datadog_integration.email} + hostFilters: + - filter_one + - filter_two + isCspmEnabled: false diff --git a/examples-generated/integration/v1alpha1/opsgenieserviceobject.yaml b/examples-generated/integration/v1alpha1/opsgenieserviceobject.yaml new file mode 100644 index 0000000..bdcbf21 --- /dev/null +++ b/examples-generated/integration/v1alpha1/opsgenieserviceobject.yaml @@ -0,0 +1,16 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: OpsgenieServiceObject +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/opsgenieserviceobject + labels: + testing.upbound.io/example-name: fake_service_name + name: fake-service-name +spec: + forProvider: + name: fake_service_name + opsgenieApiKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + region: us diff --git a/examples-generated/integration/v1alpha1/pagerduty.yaml b/examples-generated/integration/v1alpha1/pagerduty.yaml new file mode 100644 index 0000000..3efdbad --- /dev/null +++ b/examples-generated/integration/v1alpha1/pagerduty.yaml @@ -0,0 +1,54 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: Pagerduty +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/pagerduty + labels: + testing.upbound.io/example-name: pd + name: pd +spec: + forProvider: + apiTokenSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + schedules: + - https://ddog.pagerduty.com/schedules/X123VF + - https://ddog.pagerduty.com/schedules/X321XX + subdomain: ddog + +--- + +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: PagerdutyServiceObject +metadata: + annotations: + meta.upbound.io/example-id: integration.datadog/v1alpha1/pagerduty + labels: + testing.upbound.io/example-name: testing_bar + name: testing-bar +spec: + forProvider: + serviceKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + serviceName: testing_bar + +--- + +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: PagerdutyServiceObject +metadata: + annotations: + meta.upbound.io/example-id: integration.datadog/v1alpha1/pagerduty + labels: + testing.upbound.io/example-name: testing_foo + name: testing-foo +spec: + forProvider: + serviceKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + serviceName: testing_foo diff --git a/examples-generated/integration/v1alpha1/pagerdutyserviceobject.yaml b/examples-generated/integration/v1alpha1/pagerdutyserviceobject.yaml new file mode 100644 index 0000000..f3e2457 --- /dev/null +++ b/examples-generated/integration/v1alpha1/pagerdutyserviceobject.yaml @@ -0,0 +1,15 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: PagerdutyServiceObject +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/pagerdutyserviceobject + labels: + testing.upbound.io/example-name: testing_foo + name: testing-foo +spec: + forProvider: + serviceKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + serviceName: testing_foo diff --git a/examples-generated/integration/v1alpha1/slackchannel.yaml b/examples-generated/integration/v1alpha1/slackchannel.yaml new file mode 100644 index 0000000..1600713 --- /dev/null +++ b/examples-generated/integration/v1alpha1/slackchannel.yaml @@ -0,0 +1,17 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: SlackChannel +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/slackchannel + labels: + testing.upbound.io/example-name: test_channel + name: test-channel +spec: + forProvider: + accountName: foo + channelName: '#test_channel' + display: + - message: true + notified: false + snapshot: false + tags: true diff --git a/examples-generated/logs/v1alpha1/archive.yaml b/examples-generated/logs/v1alpha1/archive.yaml new file mode 100644 index 0000000..1cfccdf --- /dev/null +++ b/examples-generated/logs/v1alpha1/archive.yaml @@ -0,0 +1,17 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: Archive +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/archive + labels: + testing.upbound.io/example-name: my_s3_archive + name: my-s3-archive +spec: + forProvider: + name: my s3 archive + query: service:myservice + s3Archive: + - accountId: "001234567888" + bucket: my-bucket + path: /path/foo + roleName: my-role-name diff --git a/examples-generated/logs/v1alpha1/archiveorder.yaml b/examples-generated/logs/v1alpha1/archiveorder.yaml new file mode 100644 index 0000000..e3cd1fa --- /dev/null +++ b/examples-generated/logs/v1alpha1/archiveorder.yaml @@ -0,0 +1,13 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: ArchiveOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/archiveorder + labels: + testing.upbound.io/example-name: sample_archive_order + name: sample-archive-order +spec: + forProvider: + archiveIds: + - ${datadog_logs_archive.sample_archive_1.id} + - ${datadog_logs_archive.sample_archive_2.id} diff --git a/examples-generated/logs/v1alpha1/custompipeline.yaml b/examples-generated/logs/v1alpha1/custompipeline.yaml new file mode 100644 index 0000000..ac67c8b --- /dev/null +++ b/examples-generated/logs/v1alpha1/custompipeline.yaml @@ -0,0 +1,120 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: CustomPipeline +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/custompipeline + labels: + testing.upbound.io/example-name: sample_pipeline + name: sample-pipeline +spec: + forProvider: + filter: + - query: source:foo + isEnabled: true + name: sample pipeline + processor: + - arithmeticProcessor: + - expression: (time1 - time2)*1000 + isEnabled: true + isReplaceMissing: true + name: sample arithmetic processor + target: my_arithmetic + - attributeRemapper: + - isEnabled: true + name: sample attribute processor + overrideOnConflict: false + preserveSource: true + sourceType: tag + sources: + - db.instance + target: db + targetFormat: string + targetType: attribute + - categoryProcessor: + - category: + - filter: + - query: '@severity: "."' + name: debug + - filter: + - query: '@severity: "-"' + name: verbose + isEnabled: true + name: sample category processor + target: foo.severity + - dateRemapper: + - isEnabled: true + name: sample date remapper + sources: + - _timestamp + - published_date + - geoIpParser: + - isEnabled: true + name: sample geo ip parser + sources: + - network.client.ip + target: network.client.geoip + - grokParser: + - grok: + - matchRules: Rule %{word:my_word2} %{number:my_float2} + supportRules: "" + isEnabled: true + name: sample grok parser + samples: + - sample log 1 + source: message + - lookupProcessor: + - defaultLookup: unknown service + isEnabled: true + lookupTable: + - 1,my service + name: sample lookup processor + source: service_id + target: service_name + - messageRemapper: + - isEnabled: true + name: sample message remapper + sources: + - msg + - pipeline: + - filter: + - query: source:foo + isEnabled: true + name: nested pipeline + processor: + - urlParser: + - name: sample url parser + normalizeEndingSlashes: true + sources: + - url + - extra + target: http_url + - serviceRemapper: + - isEnabled: true + name: sample service remapper + sources: + - service + - statusRemapper: + - isEnabled: true + name: sample status remapper + sources: + - info + - trace + - stringBuilderProcessor: + - isEnabled: true + isReplaceMissing: false + name: sample string builder processor + target: user_activity + template: '%{user.name} logged in at %{timestamp}' + - traceIdRemapper: + - isEnabled: true + name: sample trace id remapper + sources: + - dd.trace_id + - userAgentParser: + - isEnabled: true + isEncoded: false + name: sample user agent parser + sources: + - user + - agent + target: http_agent diff --git a/examples-generated/logs/v1alpha1/index.yaml b/examples-generated/logs/v1alpha1/index.yaml new file mode 100644 index 0000000..57e0086 --- /dev/null +++ b/examples-generated/logs/v1alpha1/index.yaml @@ -0,0 +1,30 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: Index +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/index + labels: + testing.upbound.io/example-name: sample_index + name: sample-index +spec: + forProvider: + dailyLimit: 200000 + dailyLimitReset: + - resetTime: "14:00" + resetUtcOffset: "+02:00" + dailyLimitWarningThresholdPercentage: 50 + exclusionFilter: + - filter: + - query: app:coredns + sampleRate: 0.97 + isEnabled: true + name: Filter coredns logs + - filter: + - query: service:kube_apiserver + sampleRate: 1 + isEnabled: true + name: Kubernetes apiserver + filter: + - query: '*' + name: your index + retentionDays: 7 diff --git a/examples-generated/logs/v1alpha1/indexorder.yaml b/examples-generated/logs/v1alpha1/indexorder.yaml new file mode 100644 index 0000000..3632d58 --- /dev/null +++ b/examples-generated/logs/v1alpha1/indexorder.yaml @@ -0,0 +1,13 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: IndexOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/indexorder + labels: + testing.upbound.io/example-name: sample_index_order + name: sample-index-order +spec: + forProvider: + indexes: + - ${datadog_logs_index.sample_index.id} + name: sample_index_order diff --git a/examples-generated/logs/v1alpha1/integrationpipeline.yaml b/examples-generated/logs/v1alpha1/integrationpipeline.yaml new file mode 100644 index 0000000..ea2cfc3 --- /dev/null +++ b/examples-generated/logs/v1alpha1/integrationpipeline.yaml @@ -0,0 +1,11 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: IntegrationPipeline +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/integrationpipeline + labels: + testing.upbound.io/example-name: python + name: python +spec: + forProvider: + isEnabled: true diff --git a/examples-generated/logs/v1alpha1/metric.yaml b/examples-generated/logs/v1alpha1/metric.yaml new file mode 100644 index 0000000..b9ceccc --- /dev/null +++ b/examples-generated/logs/v1alpha1/metric.yaml @@ -0,0 +1,21 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: Metric +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/metric + labels: + testing.upbound.io/example-name: testing_logs_metric + name: testing-logs-metric +spec: + forProvider: + compute: + - aggregationType: distribution + path: '@duration' + filter: + - query: service:test + groupBy: + - path: '@status' + tagName: status + - path: '@version' + tagName: version + name: testing.logs.metric diff --git a/examples-generated/logs/v1alpha1/pipelineorder.yaml b/examples-generated/logs/v1alpha1/pipelineorder.yaml new file mode 100644 index 0000000..0cc65e6 --- /dev/null +++ b/examples-generated/logs/v1alpha1/pipelineorder.yaml @@ -0,0 +1,14 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: PipelineOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/pipelineorder + labels: + testing.upbound.io/example-name: sample_pipeline_order + name: sample-pipeline-order +spec: + forProvider: + name: sample_pipeline_order + pipelines: + - ${datadog_logs_custom_pipeline.sample_pipeline.id} + - ${datadog_logs_integration_pipeline.python.id} diff --git a/examples-generated/metric/v1alpha1/metadata.yaml b/examples-generated/metric/v1alpha1/metadata.yaml new file mode 100644 index 0000000..3cbabb7 --- /dev/null +++ b/examples-generated/metric/v1alpha1/metadata.yaml @@ -0,0 +1,15 @@ +apiVersion: metric.datadog.upbound.io/v1alpha1 +kind: Metadata +metadata: + annotations: + meta.upbound.io/example-id: metric/v1alpha1/metadata + labels: + testing.upbound.io/example-name: request_time + name: request-time +spec: + forProvider: + description: 99th percentile request time in milliseconds + metric: request.time + shortName: Request time + type: gauge + unit: millisecond diff --git a/examples-generated/metric/v1alpha1/tagconfiguration.yaml b/examples-generated/metric/v1alpha1/tagconfiguration.yaml new file mode 100644 index 0000000..2cf695f --- /dev/null +++ b/examples-generated/metric/v1alpha1/tagconfiguration.yaml @@ -0,0 +1,16 @@ +apiVersion: metric.datadog.upbound.io/v1alpha1 +kind: TagConfiguration +metadata: + annotations: + meta.upbound.io/example-id: metric/v1alpha1/tagconfiguration + labels: + testing.upbound.io/example-name: example_dist_metric + name: example-dist-metric +spec: + forProvider: + includePercentiles: false + metricName: example.terraform.dist.metric + metricType: distribution + tags: + - sport + - datacenter diff --git a/examples-generated/null/resource.yaml b/examples-generated/null/resource.yaml deleted file mode 100644 index 59f7545..0000000 --- a/examples-generated/null/resource.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: null.template.upbound.io/v1alpha1 -kind: Resource -metadata: - annotations: - meta.upbound.io/example-id: null/v1alpha1/resource - labels: - testing.upbound.io/example-name: cluster - name: cluster -spec: - forProvider: - connection: - - host: ${element(aws_instance.cluster.*.public_ip, 0)} - provisioner: - remote-exec: - - inline: - - bootstrap-cluster.sh ${join(" ", aws_instance.cluster.*.private_ip)} - triggers: - cluster_instance_ids: ${join(",", aws_instance.cluster.*.id)} diff --git a/examples-generated/securitymonitoring/v1alpha1/defaultrule.yaml b/examples-generated/securitymonitoring/v1alpha1/defaultrule.yaml new file mode 100644 index 0000000..b02a4c3 --- /dev/null +++ b/examples-generated/securitymonitoring/v1alpha1/defaultrule.yaml @@ -0,0 +1,15 @@ +apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +kind: DefaultRule +metadata: + annotations: + meta.upbound.io/example-id: securitymonitoring/v1alpha1/defaultrule + labels: + testing.upbound.io/example-name: adefaultrule + name: adefaultrule +spec: + forProvider: + case: + - notifications: + - '@me' + status: high + enabled: true diff --git a/examples-generated/securitymonitoring/v1alpha1/filter.yaml b/examples-generated/securitymonitoring/v1alpha1/filter.yaml new file mode 100644 index 0000000..0115ea6 --- /dev/null +++ b/examples-generated/securitymonitoring/v1alpha1/filter.yaml @@ -0,0 +1,18 @@ +apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +kind: Filter +metadata: + annotations: + meta.upbound.io/example-id: securitymonitoring/v1alpha1/filter + labels: + testing.upbound.io/example-name: my_filter + name: my-filter +spec: + forProvider: + exclusionFilter: + - name: first + query: exclude some logs + - name: second + query: exclude some other logs + isEnabled: true + name: My filter + query: The filter is filtering. diff --git a/examples-generated/securitymonitoring/v1alpha1/rule.yaml b/examples-generated/securitymonitoring/v1alpha1/rule.yaml new file mode 100644 index 0000000..cb97228 --- /dev/null +++ b/examples-generated/securitymonitoring/v1alpha1/rule.yaml @@ -0,0 +1,35 @@ +apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +kind: Rule +metadata: + annotations: + meta.upbound.io/example-id: securitymonitoring/v1alpha1/rule + labels: + testing.upbound.io/example-name: myrule + name: myrule +spec: + forProvider: + case: + - condition: errors > 3 && warnings > 10 + notifications: + - '@user' + status: high + enabled: true + message: The rule has triggered. + name: My rule + options: + - evaluationWindow: 300 + keepAlive: 600 + maxSignalDuration: 900 + query: + - aggregation: count + groupByFields: + - host + name: errors + query: status:error + - aggregation: count + groupByFields: + - host + name: warnings + query: status:warning + tags: + - type:dos diff --git a/examples-generated/sensitivedatascanner/v1alpha1/group.yaml b/examples-generated/sensitivedatascanner/v1alpha1/group.yaml new file mode 100644 index 0000000..82ff937 --- /dev/null +++ b/examples-generated/sensitivedatascanner/v1alpha1/group.yaml @@ -0,0 +1,17 @@ +apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 +kind: Group +metadata: + annotations: + meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/group + labels: + testing.upbound.io/example-name: mygroup + name: mygroup +spec: + forProvider: + description: A relevant description + filter: + - query: service:my-service + isEnabled: true + name: My new scanning group + productList: + - apm diff --git a/examples-generated/sensitivedatascanner/v1alpha1/grouporder.yaml b/examples-generated/sensitivedatascanner/v1alpha1/grouporder.yaml new file mode 100644 index 0000000..edcff04 --- /dev/null +++ b/examples-generated/sensitivedatascanner/v1alpha1/grouporder.yaml @@ -0,0 +1,14 @@ +apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 +kind: GroupOrder +metadata: + annotations: + meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/grouporder + labels: + testing.upbound.io/example-name: mygrouporder + name: mygrouporder +spec: + forProvider: + groupIds: + - group-id-1 + - group-id-2 + - group-id-3 diff --git a/examples-generated/sensitivedatascanner/v1alpha1/rule.yaml b/examples-generated/sensitivedatascanner/v1alpha1/rule.yaml new file mode 100644 index 0000000..29ef551 --- /dev/null +++ b/examples-generated/sensitivedatascanner/v1alpha1/rule.yaml @@ -0,0 +1,48 @@ +apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 +kind: Rule +metadata: + annotations: + meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/rule + labels: + testing.upbound.io/example-name: myrule + name: myrule +spec: + forProvider: + description: Another description + excludedNamespaces: + - username + groupId: ${datadog_sensitive_data_scanner_group.mygroup.id} + includedKeywordConfiguration: + - characterCount: 30 + keywords: + - cc + - credit card + isEnabled: true + name: My new rule + pattern: myregex + tags: + - sensitive_data:true + textReplacement: + - numberOfChars: 0 + replacementString: "" + type: hash + +--- + +apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 +kind: Group +metadata: + annotations: + meta.upbound.io/example-id: sensitivedatascanner.datadog/v1alpha1/rule + labels: + testing.upbound.io/example-name: mygroup + name: mygroup +spec: + forProvider: + description: A relevant description + filter: + - query: service:my-service + isEnabled: true + name: My new scanning group + productList: + - apm diff --git a/examples-generated/synthetics/v1alpha1/concurrencycap.yaml b/examples-generated/synthetics/v1alpha1/concurrencycap.yaml new file mode 100644 index 0000000..c554aeb --- /dev/null +++ b/examples-generated/synthetics/v1alpha1/concurrencycap.yaml @@ -0,0 +1,11 @@ +apiVersion: synthetics.datadog.upbound.io/v1alpha1 +kind: ConcurrencyCap +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1alpha1/concurrencycap + labels: + testing.upbound.io/example-name: this + name: this +spec: + forProvider: + onDemandConcurrencyCap: 1 diff --git a/examples-generated/synthetics/v1alpha1/globalvariable.yaml b/examples-generated/synthetics/v1alpha1/globalvariable.yaml new file mode 100644 index 0000000..d6a738c --- /dev/null +++ b/examples-generated/synthetics/v1alpha1/globalvariable.yaml @@ -0,0 +1,19 @@ +apiVersion: synthetics.datadog.upbound.io/v1alpha1 +kind: GlobalVariable +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1alpha1/globalvariable + labels: + testing.upbound.io/example-name: test_variable + name: test-variable +spec: + forProvider: + description: Description of the variable + name: EXAMPLE_VARIABLE + tags: + - foo:bar + - env:test + valueSecretRef: + key: example-key + name: example-secret + namespace: upbound-system diff --git a/examples-generated/synthetics/v1alpha1/privatelocation.yaml b/examples-generated/synthetics/v1alpha1/privatelocation.yaml new file mode 100644 index 0000000..7e28d56 --- /dev/null +++ b/examples-generated/synthetics/v1alpha1/privatelocation.yaml @@ -0,0 +1,15 @@ +apiVersion: synthetics.datadog.upbound.io/v1alpha1 +kind: PrivateLocation +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1alpha1/privatelocation + labels: + testing.upbound.io/example-name: private_location + name: private-location +spec: + forProvider: + description: Description of the private location + name: First private location + tags: + - foo:bar + - env:test diff --git a/examples/apm/v1alpha1/retentionfilter.yaml b/examples/apm/v1alpha1/retentionfilter.yaml new file mode 100644 index 0000000..9694ade --- /dev/null +++ b/examples/apm/v1alpha1/retentionfilter.yaml @@ -0,0 +1,16 @@ +apiVersion: apm.datadog.upbound.io/v1alpha1 +kind: RetentionFilter +metadata: + annotations: + meta.upbound.io/example-id: apm/v1alpha1/retentionfilter + labels: + testing.upbound.io/example-name: retentionfilter-foo + name: retentionfilter-foo +spec: + forProvider: + enabled: false + name: Sample order + filter: {} + # query: "*" + filterType: spans-sampling-processor + rate: "1.0" diff --git a/examples/apm/v1alpha1/retentionfilterorder.yaml b/examples/apm/v1alpha1/retentionfilterorder.yaml new file mode 100644 index 0000000..d4d1775 --- /dev/null +++ b/examples/apm/v1alpha1/retentionfilterorder.yaml @@ -0,0 +1,31 @@ +apiVersion: apm.datadog.upbound.io/v1alpha1 +kind: RetentionFilterOrder +metadata: + annotations: + meta.upbound.io/example-id: apm/v1alpha1/retentionfilterorder + labels: + testing.upbound.io/example-name: bar + name: bar +spec: + forProvider: + filterIds: + - ${datadog_apm_retention_filter.foo.id} + +--- + +apiVersion: apm.datadog.upbound.io/v1alpha1 +kind: RetentionFilter +metadata: + annotations: + meta.upbound.io/example-id: apm.datadog/v1alpha1/retentionfilterorder + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + enabled: false + filter: + - query: '*' + filterType: spans-sampling-processor + name: Sample order + rate: "1.0" diff --git a/examples/cloud/v1alpha1/configurationrule.yaml b/examples/cloud/v1alpha1/configurationrule.yaml new file mode 100644 index 0000000..6089e53 --- /dev/null +++ b/examples/cloud/v1alpha1/configurationrule.yaml @@ -0,0 +1,47 @@ +apiVersion: cloud.datadog.upbound.io/v1alpha1 +kind: ConfigurationRule +metadata: + annotations: + meta.upbound.io/example-id: cloud/v1alpha1/configurationrule + labels: + testing.upbound.io/example-name: myrule + name: myrule +spec: + forProvider: + enabled: true + groupBy: + - '@resource' + message: Rule has triggered + name: My cloud configuration rule + notifications: + - '@channel' + policy: | + package datadog + + import data.datadog.output as dd_output + + import future.keywords.contains + import future.keywords.if + import future.keywords.in + + eval(resource) = "skip" if { + # Logic that evaluates to true if the resource should be skipped + true + } else = "pass" { + # Logic that evaluates to true if the resource is compliant + true + } else = "fail" { + # Logic that evaluates to true if the resource is not compliant + true + } + + # This part remains unchanged for all rules + results contains result if { + some resource in input.resources[input.main_resource_type] + result := dd_output.format(resource, eval(resource)) + } + relatedResourceTypes: [] + resourceType: aws_s3_bucket + severity: high + tags: + - some:tag diff --git a/examples/cloud/v1alpha1/workloadsecurityagentrule.yaml b/examples/cloud/v1alpha1/workloadsecurityagentrule.yaml new file mode 100644 index 0000000..9f459c5 --- /dev/null +++ b/examples/cloud/v1alpha1/workloadsecurityagentrule.yaml @@ -0,0 +1,14 @@ +apiVersion: cloud.datadog.upbound.io/v1alpha1 +kind: WorkloadSecurityAgentRule +metadata: + annotations: + meta.upbound.io/example-id: cloud/v1alpha1/workloadsecurityagentrule + labels: + testing.upbound.io/example-name: my_agent_rule + name: my-agent-rule +spec: + forProvider: + description: My agent rule + enabled: true + expression: exec.file.name == "java" + name: my_agent_rule diff --git a/examples/datadog/v1alpha1/apikey.yaml b/examples/datadog/v1alpha1/apikey.yaml new file mode 100644 index 0000000..a31f091 --- /dev/null +++ b/examples/datadog/v1alpha1/apikey.yaml @@ -0,0 +1,11 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: APIKey +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/apikey + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: apiKeyFoo diff --git a/examples/datadog/v1alpha1/appkey.yaml b/examples/datadog/v1alpha1/appkey.yaml new file mode 100644 index 0000000..2fb26d4 --- /dev/null +++ b/examples/datadog/v1alpha1/appkey.yaml @@ -0,0 +1,11 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: AppKey +metadata: +# annotations: +# meta.upbound.io/example-id: datadog/v1alpha1/appkey + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: foo diff --git a/examples/datadog/v1alpha1/authnmapping.yaml b/examples/datadog/v1alpha1/authnmapping.yaml new file mode 100644 index 0000000..668ac34 --- /dev/null +++ b/examples/datadog/v1alpha1/authnmapping.yaml @@ -0,0 +1,13 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: AuthnMapping +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/authnmapping + labels: + testing.upbound.io/example-name: dev_ro_role_mapping + name: dev-ro-role-mapping +spec: + forProvider: + key: Member-of + role: "4400a694-d51f-11ee-84ca-da7ad0900002" + value: Development diff --git a/examples/datadog/v1alpha1/childorganization.yaml b/examples/datadog/v1alpha1/childorganization.yaml new file mode 100644 index 0000000..08f5587 --- /dev/null +++ b/examples/datadog/v1alpha1/childorganization.yaml @@ -0,0 +1,13 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ChildOrganization +metadata: + # The caller API key needs to be associated with permissions to + # create child organizations for the request to succeed. + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/childorganization + labels: + testing.upbound.io/example-name: organization + name: child-org-foo +spec: + forProvider: + name: child-org-foo diff --git a/examples/datadog/v1alpha1/dashboardjson.yaml b/examples/datadog/v1alpha1/dashboardjson.yaml new file mode 100644 index 0000000..d688b0f --- /dev/null +++ b/examples/datadog/v1alpha1/dashboardjson.yaml @@ -0,0 +1,496 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: DashboardJSON +metadata: + annotations: + meta.upbound.io/example-id: dashboard/v1alpha1/dashboardjson + labels: + testing.upbound.io/example-name: dashboard_json + name: dashboard-json +spec: + forProvider: + dashboard: | + { + "title":"Ordered Layout Dashboard", + "description":"Created using the Datadog provider in Terraform", + "widgets":[ + { + "id":719369537777170, + "definition":{ + "title":"Widget Title", + "type":"alert_graph", + "alert_id":"895605", + "viz_type":"timeseries" + } + }, + { + "id":2306240030393868, + "definition":{ + "title":"Widget Title", + "type":"alert_value", + "alert_id":"895605", + "unit":"b", + "text_align":"center", + "precision":3 + } + }, + { + "id":6990998850881326, + "definition":{ + "title":"Widget Title", + "type":"alert_value", + "alert_id":"895605", + "unit":"b", + "text_align":"center", + "precision":3 + } + }, + { + "id":3351284044659007, + "definition":{ + "title":"Widget Title", + "type":"change", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "compare_to":"week_before", + "change_type":"absolute", + "order_dir":"desc", + "increase_good":true, + "order_by":"name", + "show_present":true + } + ] + } + }, + { + "id":6450290622996182, + "definition":{ + "title":"Widget Title", + "show_legend":false, + "type":"distribution", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "style":{ + "palette":"warm" + } + } + ] + } + }, + { + "id":4902842646291536, + "definition":{ + "title":"Widget Title", + "type":"check_status", + "check":"aws.ecs.agent_connected", + "grouping":"cluster", + "group_by":[ + "account", + "cluster" + ], + "tags":[ + "account:demo", + "cluster:awseb-ruthebdog-env-8-dn3m6u3gvk" + ] + } + }, + { + "id":6392349954822644, + "definition":{ + "title":"Widget Title", + "show_legend":false, + "type":"heatmap", + "yaxis":{ + "scale":"sqrt", + "include_zero":true, + "min":"1", + "max":"2" + }, + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "style":{ + "palette":"warm" + } + } + ] + } + }, + { + "id":5222961478940988, + "definition":{ + "title":"Widget Title", + "type":"hostmap", + "requests":{ + "fill":{ + "q":"avg:system.load.1{*} by {host}" + }, + "size":{ + "q":"avg:memcache.uptime{*} by {host}" + } + }, + "node_type":"container", + "no_metric_hosts":true, + "no_group_hosts":true, + "group":[ + "host", + "region" + ], + "scope":[ + "region:us-east-1", + "aws_account:727006795293" + ], + "style":{ + "palette":"yellow_to_green", + "palette_flip":true, + "fill_min":"10", + "fill_max":"20" + } + } + }, + { + "id":8121199734227072, + "definition":{ + "type":"note", + "content":"note text", + "background_color":"pink", + "font_size":"14", + "text_align":"center", + "show_tick":true, + "tick_pos":"50%", + "tick_edge":"left" + } + }, + { + "id":1775856835833038, + "definition":{ + "title":"Widget Title", + "type":"query_value", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "aggregator":"sum", + "conditional_formats":[ + { + "hide_value":false, + "comparator":"<", + "palette":"white_on_green", + "value":2 + }, + { + "hide_value":false, + "comparator":">", + "palette":"white_on_red", + "value":2.2 + } + ] + } + ], + "autoscale":true, + "custom_unit":"xx", + "text_align":"right", + "precision":4 + } + }, + { + "id":8461455966625581, + "definition":{ + "title":"Widget Title", + "type":"query_table", + "requests":[ + { + "q":"avg:system.load.1{env:staging} by {account}", + "aggregator":"sum", + "conditional_formats":[ + { + "hide_value":false, + "comparator":"<", + "palette":"white_on_green", + "value":2 + }, + { + "hide_value":false, + "comparator":">", + "palette":"white_on_red", + "value":2.2 + } + ], + "limit":10 + } + ] + } + }, + { + "id":8660006349418736, + "definition":{ + "title":"Widget Title", + "type":"scatterplot", + "requests":{ + "x":{ + "q":"avg:system.cpu.user{*} by {service, account}", + "aggregator":"max" + }, + "y":{ + "q":"avg:system.mem.used{*} by {service, account}", + "aggregator":"min" + } + }, + "xaxis":{ + "scale":"pow", + "label":"x", + "include_zero":true, + "min":"1", + "max":"2000" + }, + "yaxis":{ + "scale":"log", + "label":"y", + "include_zero":false, + "min":"5", + "max":"2222" + }, + "color_by_groups":[ + "account", + "apm-role-group" + ] + } + }, + { + "id":1669590772917638, + "definition":{ + "title":"env: prod, datacenter:dc1, service: master-db", + "title_size":"16", + "title_align":"left", + "type":"servicemap", + "service":"master-db", + "filters":[ + "env:prod", + "datacenter:dc1" + ] + } + }, + { + "id":2138829058361817, + "definition":{ + "title":"Widget Title", + "show_legend":true, + "legend_size":"2", + "type":"timeseries", + "requests":[ + { + "q":"avg:system.cpu.user{app:general} by {env}", + "on_right_yaxis":false, + "metadata":[ + { + "expression":"avg:system.cpu.user{app:general} by {env}", + "alias_name":"Alpha" + } + ], + "style":{ + "palette":"warm", + "line_type":"dashed", + "line_width":"thin" + }, + "display_type":"line" + }, + { + "on_right_yaxis":false, + "log_query":{ + "index":"mcnulty", + "search":{ + "query":"status:info" + }, + "group_by":[ + { + "facet":"host", + "sort":{ + "facet":"@duration", + "aggregation":"avg", + "order":"desc" + }, + "limit":10 + } + ], + "compute":{ + "facet":"@duration", + "interval":5000, + "aggregation":"avg" + } + }, + "display_type":"area" + }, + { + "on_right_yaxis":false, + "apm_query":{ + "index":"apm-search", + "search":{ + "query":"type:web" + }, + "group_by":[ + { + "facet":"resource_name", + "sort":{ + "facet":"@string_query.interval", + "aggregation":"avg", + "order":"desc" + }, + "limit":50 + } + ], + "compute":{ + "facet":"@duration", + "interval":5000, + "aggregation":"avg" + } + }, + "display_type":"bars" + }, + { + "on_right_yaxis":false, + "process_query":{ + "search_by":"error", + "metric":"process.stat.cpu.total_pct", + "limit":50, + "filter_by":[ + "active" + ] + }, + "display_type":"area" + } + ], + "yaxis":{ + "scale":"log", + "include_zero":false, + "max":"100" + }, + "events":[ + { + "q":"sources:test tags:1" + }, + { + "q":"sources:test tags:2" + } + ], + "markers":[ + { + "label":" z=6 ", + "value":"y = 4", + "display_type":"error dashed" + }, + { + "label":" x=8 ", + "value":"10 < y < 999", + "display_type":"ok solid" + } + ] + } + }, + { + "id":7307171374656551, + "definition":{ + "title":"Widget Title", + "type":"toplist", + "requests":[ + { + "q":"avg:system.cpu.user{app:general} by {env}", + "conditional_formats":[ + { + "hide_value":false, + "comparator":"<", + "palette":"white_on_green", + "value":2 + }, + { + "hide_value":false, + "comparator":">", + "palette":"white_on_red", + "value":2.2 + } + ] + } + ] + } + }, + { + "id":7086674838553258, + "definition":{ + "title":"Group Widget", + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":3726092277657502, + "definition":{ + "type":"note", + "content":"cluster note widget", + "background_color":"pink", + "font_size":"14", + "text_align":"center", + "show_tick":true, + "tick_pos":"50%", + "tick_edge":"left" + } + }, + { + "id":6376384650558057, + "definition":{ + "title":"Alert Graph", + "type":"alert_graph", + "alert_id":"123", + "viz_type":"toplist" + } + } + ] + } + }, + { + "id":4668903563678912, + "definition":{ + "title":"Widget Title", + "type":"slo", + "view_type":"detail", + "time_windows":[ + "7d", + "previous_week" + ], + "slo_id":"56789", + "show_error_budget":true, + "view_mode":"overall", + "global_time_target":"0" + } + } + ], + "template_variables":[ + { + "name":"var_1", + "default":"aws", + "prefix":"host" + }, + { + "name":"var_2", + "default":"autoscaling", + "prefix":"service_name" + } + ], + "layout_type":"ordered", + "is_read_only":true, + "notify_list":[ + + ], + "template_variable_presets":[ + { + "name":"preset_1", + "template_variables":[ + { + "name":"var_1", + "value":"host.dc" + }, + { + "name":"var_2", + "value":"my_service" + } + ] + } + ] + } diff --git a/examples/datadog/v1alpha1/dashboardjsonuxpminset.yaml b/examples/datadog/v1alpha1/dashboardjsonuxpminset.yaml new file mode 100644 index 0000000..8f4a261 --- /dev/null +++ b/examples/datadog/v1alpha1/dashboardjsonuxpminset.yaml @@ -0,0 +1,888 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: DashboardJSON +metadata: + annotations: + meta.upbound.io/example-id: dashboard/v1alpha1/dashboardjson + labels: + testing.upbound.io/example-name: dashboard_json_uxp_min_set + name: dashboard-json-uxp-min-set +spec: + forProvider: + dashboard: | + { + "title": "Upbound UXP Min Set", + "description": "## Upbound UXP Min Set\n\nThis dashboard covers graphs for the UXP Min Set metrics. They are as follows\n\n- Upjet provider Terraform CLI invocations\n- Upjet provider Terraform running processes\n- Total number of reconciliations per controller\n- Number of goroutines that currently exist\n- Number of bytes allocated and still in use\n- Number of bytes allocated and still in use\n- Total user and system CPU time spent in seconds\n- Resident memory size in bytes\n- Start time of the process since unix epoch in seconds\n- Number of HTTP requests partitioned by status code, method, and host.\n- Total number of adds handled by workqueue\n- Current depth of workqueue\n- How long in seconds processing an item from workqueue takes", + "widgets": [ + { + "id": 1436105568556493, + "definition": { + "type": "image", + "url": "https://static.upbound.io/marketing/upbound_uxp_logo.svg", + "sizing": "cover", + "has_background": true, + "has_border": true, + "vertical_align": "center", + "horizontal_align": "center" + }, + "layout": { + "x": 0, + "y": 0, + "width": 2, + "height": 2 + } + }, + { + "id": 7058913334764000, + "definition": { + "title": "Kubernetes Upbound-System Container Restarts", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "avg:kubernetes.containers.restarts{kube_namespace:upbound-system} by {kube_container_name}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 2, + "y": 0, + "width": 2, + "height": 2 + } + }, + { + "id": 852694346314535, + "definition": { + "title": "Kubernetes API Server Request Duration Seconds By Resource", + "type": "treemap", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "avg:kube_apiserver.request_duration_seconds.count{group:} by {resource}", + "aggregator": "avg" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ] + }, + "layout": { + "x": 4, + "y": 0, + "width": 4, + "height": 2 + } + }, + { + "id": 8807870180367880, + "definition": { + "title": "Kubernetes API Server Etcd Request Duration Seconds", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "response_format": "timeseries", + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "avg:kube_apiserver.etcd_request_duration_seconds.sum{*} by {host}" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 8, + "y": 0, + "width": 4, + "height": 2 + } + }, + { + "id": 4944114324490950, + "definition": { + "title": "Go Goroutines", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "per_minute(query1)" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "avg:uxp.go_goroutines{*} by {pod,host}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 2, + "width": 4, + "height": 2 + } + }, + { + "id": 8655832006769687, + "definition": { + "title": "Go Memstats Alloc Bytes", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "per_minute(query1)" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.go_memstats_alloc_bytes{*} by {host,pod}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 4, + "y": 2, + "width": 4, + "height": 2 + } + }, + { + "id": 8677874650172048, + "definition": { + "title": "Go Memstats Alloc Bytes Total", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.go_memstats_alloc_bytes_total{*} by {host,pod}.as_count()" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 8, + "y": 2, + "width": 4, + "height": 2 + } + }, + { + "id": 6974392427993167, + "definition": { + "title": "Process CPU Seconds Total", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.process_cpu_seconds_total{*} by {host,pod}.as_count()" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 4, + "width": 4, + "height": 2 + } + }, + { + "id": 8246050534616739, + "definition": { + "title": "Process Resident Memory Bytes", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.process_resident_memory_bytes{*} by {host,pod}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 4, + "y": 4, + "width": 4, + "height": 2 + } + }, + { + "id": 8583070210807976, + "definition": { + "title": "Process Start Time Seconds", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.process_start_time_seconds{*} by {host,pod}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 8, + "y": 4, + "width": 4, + "height": 2 + } + }, + { + "id": 6058734657813571, + "definition": { + "title": "Rest Client Requests Total", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "sum:uxp.rest_client_requests_total{*} by {host,pod,method}.as_count()" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 6, + "width": 4, + "height": 2 + } + }, + { + "id": 8383428569535810, + "definition": { + "title": "Workqueue Adds Total", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "sum:uxp.workqueue_adds_total{*} by {host,pod,name}.as_count()" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 4, + "y": 6, + "width": 4, + "height": 2 + } + }, + { + "id": 4395817810242775, + "definition": { + "title": "Workqueue Depth", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "per_minute(query1)" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.workqueue_depth{$group}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 8, + "y": 6, + "width": 4, + "height": 2 + } + }, + { + "id": 7370648797108836, + "definition": { + "title": "Workqueue Work Duration Seconds Bucket", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "per_minute(query1)" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.workqueue_work_duration_seconds_bucket.max{*} by {host,pod,name,le}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 8, + "width": 4, + "height": 2 + } + }, + { + "id": 823949909374051, + "definition": { + "title": "Workqueue Work Duration Seconds Count", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "avg:uxp.workqueue_work_duration_seconds_bucket.count{*} by {host,pod,name,le}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 4, + "y": 8, + "width": 4, + "height": 2 + } + }, + { + "id": 6712236079650739, + "definition": { + "title": "Workqueue Work Duration Seconds Sum", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "sum:uxp.workqueue_work_duration_seconds_sum{*} by {host,pod,name}.as_count()" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 8, + "y": 8, + "width": 4, + "height": 2 + } + }, + { + "id": 3667451147019795, + "definition": { + "title": "Upjet Terraform Active CLI Invocations", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "per_minute(query1)" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.upjet_terraform_active_cli_invocations{*}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 10, + "width": 4, + "height": 2 + } + }, + { + "id": 4282148986424876, + "definition": { + "title": "Upjet Terraform Running Processes", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "per_minute(query1)" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.upjet_terraform_running_processes{*}" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 4, + "y": 10, + "width": 4, + "height": 2 + } + }, + { + "id": 2395363743244600, + "definition": { + "title": "Controller Runtime Reconcile Errors", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "per_minute(query1)" + } + ], + "queries": [ + { + "name": "query1", + "data_source": "metrics", + "query": "max:uxp.controller_runtime_reconcile_errors_total{*}.as_count()" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 8, + "y": 10, + "width": 4, + "height": 2 + } + } + ], + "template_variables": [ + { + "name": "group", + "prefix": "group", + "available_values": [], + "default": "*" + }, + { + "name": "kind", + "prefix": "kind", + "available_values": [], + "default": "*" + }, + { + "name": "quantile", + "prefix": "quantile", + "available_values": [], + "default": "*" + } + ], + "layout_type": "ordered", + "notify_list": [], + "reflow_type": "fixed" + } diff --git a/examples/datadog/v1alpha1/dashboardlist.yaml b/examples/datadog/v1alpha1/dashboardlist.yaml new file mode 100644 index 0000000..9229946 --- /dev/null +++ b/examples/datadog/v1alpha1/dashboardlist.yaml @@ -0,0 +1,16 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: DashboardList +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/dashboardlist + labels: + testing.upbound.io/example-name: new_list + name: new-list +spec: + forProvider: + dashItem: + - dashId: 9e9-qw9-ngn + type: custom_timeboard + #- dashId: foo-dash-id-2 + #type: custom_screenboard + name: UXP Created List diff --git a/examples/datadog/v1alpha1/downtime.yaml b/examples/datadog/v1alpha1/downtime.yaml new file mode 100644 index 0000000..1e20827 --- /dev/null +++ b/examples/datadog/v1alpha1/downtime.yaml @@ -0,0 +1,18 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Downtime +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/downtime + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + end: 1908796659 + monitorId: 140215517 + recurrence: + - period: 1 + type: days + scope: + - '*' + start: 1908756659 diff --git a/examples/datadog/v1alpha1/downtimeschedule.yaml b/examples/datadog/v1alpha1/downtimeschedule.yaml new file mode 100644 index 0000000..0a49a5f --- /dev/null +++ b/examples/datadog/v1alpha1/downtimeschedule.yaml @@ -0,0 +1,31 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: DowntimeSchedule +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/downtimeschedule + labels: + testing.upbound.io/example-name: downtime_schedule_example + name: downtime-schedule-example +spec: + forProvider: + displayTimezone: America/New_York + message: Message about the downtime + monitorIdentifier: + #monitorId: "140479090" + monitorTags: + - "test:123" + - "data:test" + muteFirstRecoveryNotification: true + notifyEndStates: + - alert + - warn + notifyEndTypes: + - canceled + - expired + recurringSchedule: + recurrence: + - duration: 1h + rrule: "FREQ=DAILY;INTERVAL=1" + start: "2050-01-02T03:04:05" + timezone: "America/New_York" + scope: env:us9-prod7 AND team:test123 diff --git a/examples/datadog/v1alpha1/monitor.yaml b/examples/datadog/v1alpha1/monitor.yaml new file mode 100644 index 0000000..a29f3e5 --- /dev/null +++ b/examples/datadog/v1alpha1/monitor.yaml @@ -0,0 +1,22 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Monitor +metadata: + annotations: + meta.upbound.io/example-id: monitor/v1alpha1/monitor + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + escalationMessage: Escalation message @pagerduty + includeTags: true + message: 'Monitor triggered. Notify: @hipchat-channel' + monitorThresholds: + - critical: "4" + warning: "2" + name: Name for monitor foo + query: avg(last_1h):avg:aws.ec2.cpu{environment:foo,host:foo} by {host} > 4 + tags: + - foo:bar + - team:fooBar + type: metric alert diff --git a/examples/datadog/v1alpha1/monitorconfigpolicy.yaml b/examples/datadog/v1alpha1/monitorconfigpolicy.yaml new file mode 100644 index 0000000..2999632 --- /dev/null +++ b/examples/datadog/v1alpha1/monitorconfigpolicy.yaml @@ -0,0 +1,17 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: MonitorConfigPolicy +metadata: + annotations: + meta.upbound.io/example-id: monitor/v1alpha1/configpolicy + labels: + testing.upbound.io/example-name: test + name: test +spec: + forProvider: + policyType: tag + tagPolicy: + - tagKey: env + tagKeyRequired: false + validTagValues: + - staging + - prod diff --git a/examples/datadog/v1alpha1/monitorjson.yaml b/examples/datadog/v1alpha1/monitorjson.yaml new file mode 100644 index 0000000..8a65d33 --- /dev/null +++ b/examples/datadog/v1alpha1/monitorjson.yaml @@ -0,0 +1,21 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: MonitorJSON +metadata: + annotations: + meta.upbound.io/example-id: monitor/v1alpha1/json + labels: + testing.upbound.io/example-name: monitor_json + name: monitor-json +spec: + forProvider: + monitor: "{\n \"name\": \"Example monitor - service check\",\n \"type\": + \"service check\",\n \"query\": \"\\\"ntp.in_sync\\\".by(\\\"*\\\").last(2).count_by_status()\",\n + \ \"message\": \"Change the message triggers if any host's clock goes out + of sync with the time given by NTP. The offset threshold is configured in the + Agent's 'ntp.yaml' file.\\n\\nSee [Troubleshooting NTP Offset issues](https://docs.datadoghq.com/agent/troubleshooting/ntp + for more details on cause and resolution.\",\n \"tags\": [],\n \"multi\": + true,\n\t\"restricted_roles\": null,\n \"options\": {\n \"include_tags\": + true,\n \"locked\": false,\n \"new_host_delay\": 150,\n \"notify_audit\": + false,\n \"notify_no_data\": false,\n \"thresholds\": {\n \"warning\": + 1,\n \"ok\": 1,\n \"critical\": 1\n }\n },\n + \ \"priority\": null,\n \"classification\": \"custom\"\n}\n" diff --git a/examples/datadog/v1alpha1/organizationsettings.yaml b/examples/datadog/v1alpha1/organizationsettings.yaml new file mode 100644 index 0000000..ddd1cc3 --- /dev/null +++ b/examples/datadog/v1alpha1/organizationsettings.yaml @@ -0,0 +1,11 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: OrganizationSettings +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/organizationsettings + labels: + testing.upbound.io/example-name: organization + name: organization-foo +spec: + forProvider: + name: organization-foo diff --git a/examples/datadog/v1alpha1/powerpack.yaml b/examples/datadog/v1alpha1/powerpack.yaml new file mode 100644 index 0000000..f764214 --- /dev/null +++ b/examples/datadog/v1alpha1/powerpack.yaml @@ -0,0 +1,42 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Powerpack +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/powerpack + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + description: Created using the Datadog provider in terraform + layout: + - height: 10 + width: 3 + x: 1 + "y": 0 + liveSpan: 4h + templateVariables: + - defaults: + - defaults + name: datacenter + widget: | + { + "id':38493204920, + "definition":{ + "type":"event_stream_definition", + "query":"*", + "title":"Widget Title", + "title_align":"right", + "title_size":16 + } +--- +apiVersion: datadog.upbound.io/v1alpha1 +kind: OrganizationSettings +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/powerpack + labels: + testing.upbound.io/example-name: organization + name: organization +spec: + forProvider: {} diff --git a/examples/datadog/v1alpha1/restrictionpolicy.yaml b/examples/datadog/v1alpha1/restrictionpolicy.yaml new file mode 100644 index 0000000..5de25c3 --- /dev/null +++ b/examples/datadog/v1alpha1/restrictionpolicy.yaml @@ -0,0 +1,18 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: RestrictionPolicy +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/restrictionpolicy + labels: + testing.upbound.io/example-name: restriction-policy-foo + name: restriction-policy-foo +spec: + forProvider: + bindings: + - principals: + - role:a7233104-d3a5-11ee-9d14-da7ad0900002 + relation: editor + - principals: + - org:312aa6bc-ca87-11ed-9894-da7ad0900002 + relation: viewer + resourceId: security-rule:abc-def-ghi diff --git a/examples/datadog/v1alpha1/role.yaml b/examples/datadog/v1alpha1/role.yaml new file mode 100644 index 0000000..c6380ce --- /dev/null +++ b/examples/datadog/v1alpha1/role.yaml @@ -0,0 +1,14 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Role +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/role + labels: + testing.upbound.io/example-name: role-foo + name: role-foo +spec: + forProvider: + name: role-foo + #permission: + #- id: ${data.datadog_permissions.bar.permissions.monitors_downtime} + #- id: ${data.datadog_permissions.bar.permissions.monitors_write} diff --git a/examples/datadog/v1alpha1/rumapplication.yaml b/examples/datadog/v1alpha1/rumapplication.yaml new file mode 100644 index 0000000..1beb8eb --- /dev/null +++ b/examples/datadog/v1alpha1/rumapplication.yaml @@ -0,0 +1,12 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: RUMApplication +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/rumapplication + labels: + testing.upbound.io/example-name: rum_application + name: rum-application +spec: + forProvider: + name: my-application + type: browser diff --git a/examples/datadog/v1alpha1/serviceaccount.yaml b/examples/datadog/v1alpha1/serviceaccount.yaml new file mode 100644 index 0000000..cd56614 --- /dev/null +++ b/examples/datadog/v1alpha1/serviceaccount.yaml @@ -0,0 +1,13 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceAccount +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/serviceaccount + labels: + testing.upbound.io/example-name: foobar + name: foobar +spec: + forProvider: + email: foobar@example.com + roles: + - "a151c436-d6aa-11ee-b30b-da7ad0900002" diff --git a/examples/datadog/v1alpha1/serviceaccountapplicationkey.yaml b/examples/datadog/v1alpha1/serviceaccountapplicationkey.yaml new file mode 100644 index 0000000..cbb1aac --- /dev/null +++ b/examples/datadog/v1alpha1/serviceaccountapplicationkey.yaml @@ -0,0 +1,12 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceAccountApplicationKey +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/serviceaccountapplicationkey + labels: + testing.upbound.io/example-name: sa-app-key-foo + name: sa-app-key-foo +spec: + forProvider: + name: "49c01124-f56f-43e6-9ae2-f89fe9b7a02e" + serviceAccountId: "0b760839-139d-4c99-8309-5a152dfa81b0" diff --git a/examples/datadog/v1alpha1/servicedefinitionyaml.yaml b/examples/datadog/v1alpha1/servicedefinitionyaml.yaml new file mode 100644 index 0000000..d3bda82 --- /dev/null +++ b/examples/datadog/v1alpha1/servicedefinitionyaml.yaml @@ -0,0 +1,24 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceDefinitionYAML +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/servicedefinitionyaml + labels: + testing.upbound.io/example-name: service_definition_v2_2 + name: service-definition-v2-2 +spec: + forProvider: + serviceDefinition: "schema-version: v2.2\ndd-service: shopping-cart\nteam: e-commerce-team\ncontacts:\n + \ - name: Support Email\n type: email\n contact: team@shopping.com\n - + name: Support Slack\n type: slack\n contact: https://www.slack.com/archives/shopping-cart\ndescription: + shopping cart service responsible for managing shopping carts\ntier: high\nlifecycle: + production\napplication: e-commerce\nlanguages: \n - go\n - python\ntype: + web \nci-pipeline-fingerprints:\n - fp1 \n - fp2 \nlinks:\n - name: shopping-cart + runbook\n type: runbook\n url: https://runbook/shopping-cart\n - name: + shopping-cart architecture\n type: doc\n provider: gdoc\n url: https://google.drive/shopping-cart-architecture\n + \ - name: shopping-cart service Wiki\n type: doc\n provider: wiki\n url: + https://wiki/shopping-cart\n - name: shopping-cart source code\n type: repo\n + \ provider: github\n url: http://github/shopping-cart\ntags:\n - business-unit:retail\n + \ - cost-center:engineering\nintegrations:\n pagerduty: \n service-url: + https://www.pagerduty.com/service-directory/Pshopping-cart\nextensions:\n mycompany.com/shopping-cart:\n + \ customField: customValue\n" diff --git a/examples/datadog/v1alpha1/servicelevelobjective.yaml b/examples/datadog/v1alpha1/servicelevelobjective.yaml new file mode 100644 index 0000000..b375807 --- /dev/null +++ b/examples/datadog/v1alpha1/servicelevelobjective.yaml @@ -0,0 +1,29 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceLevelObjective +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/servicelevelobjective + labels: + testing.upbound.io/example-name: slo-foo + name: slo-foo +spec: + forProvider: + name: slo-foo + description: UXP created custom metric SLO + query: + - denominator: sum:my.custom.count.metric{*}.as_count() + numerator: sum:my.custom.count.metric{type:good_events}.as_count() + tags: + - foo:bar + - baz + targetThreshold: 99.9 + thresholds: + - target: 99.9 + timeframe: 7d + warning: 99.99 + - target: 99.9 + timeframe: 30d + warning: 99.99 + timeframe: 30d + type: metric + warningThreshold: 99.99 diff --git a/examples/datadog/v1alpha1/slocorrection.yaml b/examples/datadog/v1alpha1/slocorrection.yaml new file mode 100644 index 0000000..0a036d6 --- /dev/null +++ b/examples/datadog/v1alpha1/slocorrection.yaml @@ -0,0 +1,39 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: SLOCorrection +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/slocorrection + labels: + testing.upbound.io/example-name: slo_correction_foo + name: slo-correction-foo +spec: + forProvider: + category: Scheduled Maintenance + description: UXP created SLO correction + end: 1735718600 + sloId: 07e2c175de4954bbbb52ef2e5ffe95ee + start: 1735707000 + timezone: UTC +--- +apiVersion: datadog.upbound.io/v1alpha1 +kind: ServiceLevelObjective +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/slocorrection + labels: + testing.upbound.io/example-name: slo_foo + name: slo-foo +spec: + forProvider: + name: slo-foo + description: UXP updated description about example_slo SLO + query: + - denominator: sum:my.metric{type:good}.as_count() + sum:my.metric{type:bad}.as_count() + numerator: sum:my.metric{type:good}.as_count() + tags: + - foo:bar + thresholds: + - target: 99.5 + timeframe: 7d + warning: 99.8 + type: metric diff --git a/examples/datadog/v1alpha1/spansmetric.yaml b/examples/datadog/v1alpha1/spansmetric.yaml new file mode 100644 index 0000000..f88611e --- /dev/null +++ b/examples/datadog/v1alpha1/spansmetric.yaml @@ -0,0 +1,20 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: SpansMetric +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/spansmetric + labels: + testing.upbound.io/example-name: testing_spans_metric + name: testing-spans-metric +spec: + forProvider: + compute: + aggregationType: "distribution" + includePercentiles: false + path: "@duration" + filter: + query: "@http.status_code:200 service:my-service" + groupBy: + - path: resource_name + tagName: resource_name + name: testing.span.metric diff --git a/examples/datadog/v1alpha1/team.yaml b/examples/datadog/v1alpha1/team.yaml new file mode 100644 index 0000000..89cf781 --- /dev/null +++ b/examples/datadog/v1alpha1/team.yaml @@ -0,0 +1,9 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Team +metadata: + name: team-foo +spec: + forProvider: + name: team-foo + description: Team Foo + handle: team-foo-handle diff --git a/examples/datadog/v1alpha1/teamlink.yaml b/examples/datadog/v1alpha1/teamlink.yaml new file mode 100644 index 0000000..e6b6dbf --- /dev/null +++ b/examples/datadog/v1alpha1/teamlink.yaml @@ -0,0 +1,14 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: TeamLink +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teamlink + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + label: Link label + position: 1 + teamId: + url: https://crossplane.io diff --git a/examples/datadog/v1alpha1/teammembership.yaml b/examples/datadog/v1alpha1/teammembership.yaml new file mode 100644 index 0000000..1f1006a --- /dev/null +++ b/examples/datadog/v1alpha1/teammembership.yaml @@ -0,0 +1,13 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: TeamMembership +metadata: + annotations: + meta.upbound.io/example-id: team/v1alpha1/membership + labels: + testing.upbound.io/example-name: membership-foo + name: membership-foo +spec: + forProvider: + role: admin + teamId: "fc4fd012-4578-48b5-b8c8-b717fbfb9478" + userId: "68fb13cf-d38a-11ee-81b6-72a7aa9f44d8" diff --git a/examples/datadog/v1alpha1/teampermissionsetting.yaml b/examples/datadog/v1alpha1/teampermissionsetting.yaml new file mode 100644 index 0000000..b9c3b10 --- /dev/null +++ b/examples/datadog/v1alpha1/teampermissionsetting.yaml @@ -0,0 +1,14 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: TeamPermissionSetting +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/teampermissionsetting + crossplane.io/external-name: team-foo-permission-setting + labels: + testing.upbound.io/example-name: team-foo-permission-setting + name: team-foo-permission-setting +spec: + forProvider: + action: "manage_membership" # or edit + teamId: "ac9b310e-3910-496e-9896-fdd058d65d43" + value: "organization" # or admins members organization user_access_manage teams_manage diff --git a/examples/datadog/v1alpha1/user.yaml b/examples/datadog/v1alpha1/user.yaml new file mode 100644 index 0000000..938dcab --- /dev/null +++ b/examples/datadog/v1alpha1/user.yaml @@ -0,0 +1,16 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: User +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/user + labels: + testing.upbound.io/example-name: test-user-foo + name: test-user-foo +spec: + forProvider: + # required + email: test-user-foo@example.com + + # optional + # roles: + # - ${data.datadog_role.ro_role.id} diff --git a/examples/datadog/v1alpha1/webhook.yaml b/examples/datadog/v1alpha1/webhook.yaml new file mode 100644 index 0000000..10f0e36 --- /dev/null +++ b/examples/datadog/v1alpha1/webhook.yaml @@ -0,0 +1,15 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: Webhook +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/webhook + labels: + testing.upbound.io/example-name: webhook-foo + name: webhook-foo +spec: + forProvider: + customHeaders: '${jsonencode({ "custom" : "header" })}' + encodeAs: json + name: test-webhook + payload: '${jsonencode({ "custom" : "payload" })}' + url: example.com diff --git a/examples/datadog/v1alpha1/webhookcustomvariable.yaml b/examples/datadog/v1alpha1/webhookcustomvariable.yaml new file mode 100644 index 0000000..5ef741b --- /dev/null +++ b/examples/datadog/v1alpha1/webhookcustomvariable.yaml @@ -0,0 +1,16 @@ +apiVersion: datadog.upbound.io/v1alpha1 +kind: WebhookCustomVariable +metadata: + annotations: + meta.upbound.io/example-id: datadog/v1alpha1/webhookcustomvarfoo + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + isSecret: true + name: foo + valueSecretRef: + key: info + name: datadog-webhook-secret + namespace: upbound-system diff --git a/examples/datadog/webhook-secret.yaml b/examples/datadog/webhook-secret.yaml new file mode 100644 index 0000000..59ab40a --- /dev/null +++ b/examples/datadog/webhook-secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + name: datadog-webhook-secret + namespace: upbound-system +type: Opaque +stringData: + info: "foobar" diff --git a/examples/install.yaml b/examples/install.yaml index d03f1cc..757f85b 100644 --- a/examples/install.yaml +++ b/examples/install.yaml @@ -1,6 +1,6 @@ apiVersion: pkg.crossplane.io/v1 kind: Provider metadata: - name: upjet-provider-template + name: provider-datadog spec: - package: upbound/upjet-provider-template:v0.1.0 + package: upbound/provider-datadog:v0.1.0 diff --git a/examples/integration/pagerduty-secret.sh b/examples/integration/pagerduty-secret.sh new file mode 100755 index 0000000..a2be04a --- /dev/null +++ b/examples/integration/pagerduty-secret.sh @@ -0,0 +1,13 @@ +cat < + clientSecretSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + containerAppFilters: examplefilter:true,example:one_more + cspmEnabled: true + customMetricsEnabled: false + hostFilters: examplefilter:true,example:true + tenantName: diff --git a/examples/integration/v1alpha1/cloudflareaccount.yaml b/examples/integration/v1alpha1/cloudflareaccount.yaml new file mode 100644 index 0000000..a035141 --- /dev/null +++ b/examples/integration/v1alpha1/cloudflareaccount.yaml @@ -0,0 +1,16 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: CloudflareAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/cloudflareaccount + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + email: test-email@example.com + name: test-name diff --git a/examples/integration/v1alpha1/confluentaccount.yaml b/examples/integration/v1alpha1/confluentaccount.yaml new file mode 100644 index 0000000..bb13390 --- /dev/null +++ b/examples/integration/v1alpha1/confluentaccount.yaml @@ -0,0 +1,18 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: ConfluentAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/confluentaccount + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: TESTAPIKEY123 + apiSecretSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + tags: + - mytag + - mytag2:myvalue diff --git a/examples/integration/v1alpha1/confluentresource.yaml b/examples/integration/v1alpha1/confluentresource.yaml new file mode 100644 index 0000000..b6879a6 --- /dev/null +++ b/examples/integration/v1alpha1/confluentresource.yaml @@ -0,0 +1,37 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: ConfluentResource +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/confluentresource + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: ${datadog_integration_confluent_account.foo.id} + resourceId: "123456" + resourceType: kafka + tags: + - mytag + - mytag2:myvalue + +--- + +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: ConfluentAccount +metadata: + annotations: + meta.upbound.io/example-id: integration.datadog/v1alpha1/confluentresource + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: TESTAPIKEY123 + apiSecretSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + tags: + - mytag + - mytag2:myvalue diff --git a/examples/integration/v1alpha1/fastlyaccount.yaml b/examples/integration/v1alpha1/fastlyaccount.yaml new file mode 100644 index 0000000..22d63c5 --- /dev/null +++ b/examples/integration/v1alpha1/fastlyaccount.yaml @@ -0,0 +1,12 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: FastlyAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/fastlyaccount + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: ABCDEFG123 + name: test-name diff --git a/examples/integration/v1alpha1/fastlyservice.yaml b/examples/integration/v1alpha1/fastlyservice.yaml new file mode 100644 index 0000000..cf250ff --- /dev/null +++ b/examples/integration/v1alpha1/fastlyservice.yaml @@ -0,0 +1,30 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: FastlyService +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/fastlyservice + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: ${datadog_integration_fastly_account.foo.id} + serviceId: my-service-id + tags: + - mytag + - mytag2:myvalue + +--- + +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: FastlyAccount +metadata: + annotations: + meta.upbound.io/example-id: integration.datadog/v1alpha1/fastlyservice + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: ABCDEFG123 + name: test-name diff --git a/examples/integration/v1alpha1/gcp.yaml b/examples/integration/v1alpha1/gcp.yaml new file mode 100644 index 0000000..074de19 --- /dev/null +++ b/examples/integration/v1alpha1/gcp.yaml @@ -0,0 +1,19 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: GCP +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/gcp + labels: + testing.upbound.io/example-name: awesome_gcp_project_integration + name: awesome-gcp-project-integration +spec: + forProvider: + clientEmail: awesome-service-account@awesome-project-id.iam.gserviceaccount.com + clientId: "123456789012345678901" + hostFilters: foo:bar,buzz:lightyear + privateKeyId: "1234567890123456789012345678901234567890" + privateKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + projectId: awesome-project-id diff --git a/examples/integration/v1alpha1/gcpsts.yaml b/examples/integration/v1alpha1/gcpsts.yaml new file mode 100644 index 0000000..d1426a4 --- /dev/null +++ b/examples/integration/v1alpha1/gcpsts.yaml @@ -0,0 +1,16 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: GCPSTS +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/gcpsts + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + automute: true + clientEmail: ${google_service_account.datadog_integration.email} + hostFilters: + - filter_one + - filter_two + isCspmEnabled: false diff --git a/examples/integration/v1alpha1/opsgenieserviceobject.yaml b/examples/integration/v1alpha1/opsgenieserviceobject.yaml new file mode 100644 index 0000000..bdcbf21 --- /dev/null +++ b/examples/integration/v1alpha1/opsgenieserviceobject.yaml @@ -0,0 +1,16 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: OpsgenieServiceObject +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/opsgenieserviceobject + labels: + testing.upbound.io/example-name: fake_service_name + name: fake-service-name +spec: + forProvider: + name: fake_service_name + opsgenieApiKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + region: us diff --git a/examples/integration/v1alpha1/pagerduty.yaml b/examples/integration/v1alpha1/pagerduty.yaml new file mode 100644 index 0000000..922a378 --- /dev/null +++ b/examples/integration/v1alpha1/pagerduty.yaml @@ -0,0 +1,19 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: Pagerduty +metadata: + # https://www.pagerduty.com/docs/guides/datadog-integration-guide/ + annotations: + meta.upbound.io/example-id: integration/v1alpha1/pagerduty + labels: + testing.upbound.io/example-name: pd + name: pd +spec: + forProvider: + apiTokenSecretRef: + key: credentials + name: pagerduty-secret + namespace: upbound-system + schedules: + - https://ddog.pagerduty.com/schedules/X123VF + - https://ddog.pagerduty.com/schedules/X321XX + subdomain: ddog diff --git a/examples/integration/v1alpha1/pagerdutyserviceobject.yaml b/examples/integration/v1alpha1/pagerdutyserviceobject.yaml new file mode 100644 index 0000000..0e1e37b --- /dev/null +++ b/examples/integration/v1alpha1/pagerdutyserviceobject.yaml @@ -0,0 +1,15 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: PagerdutyServiceObject +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/pagerdutyserviceobject + labels: + testing.upbound.io/example-name: testing_foo + name: testing-foo +spec: + forProvider: + serviceKeySecretRef: + key: credentials + name: pagerduty-secret + namespace: upbound-system + serviceName: testing_foo diff --git a/examples/integration/v1alpha1/slackchannel.yaml b/examples/integration/v1alpha1/slackchannel.yaml new file mode 100644 index 0000000..1600713 --- /dev/null +++ b/examples/integration/v1alpha1/slackchannel.yaml @@ -0,0 +1,17 @@ +apiVersion: integration.datadog.upbound.io/v1alpha1 +kind: SlackChannel +metadata: + annotations: + meta.upbound.io/example-id: integration/v1alpha1/slackchannel + labels: + testing.upbound.io/example-name: test_channel + name: test-channel +spec: + forProvider: + accountName: foo + channelName: '#test_channel' + display: + - message: true + notified: false + snapshot: false + tags: true diff --git a/examples/logs/v1alpha1/archive.yaml b/examples/logs/v1alpha1/archive.yaml new file mode 100644 index 0000000..1cfccdf --- /dev/null +++ b/examples/logs/v1alpha1/archive.yaml @@ -0,0 +1,17 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: Archive +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/archive + labels: + testing.upbound.io/example-name: my_s3_archive + name: my-s3-archive +spec: + forProvider: + name: my s3 archive + query: service:myservice + s3Archive: + - accountId: "001234567888" + bucket: my-bucket + path: /path/foo + roleName: my-role-name diff --git a/examples/logs/v1alpha1/archiveorder.yaml b/examples/logs/v1alpha1/archiveorder.yaml new file mode 100644 index 0000000..e3cd1fa --- /dev/null +++ b/examples/logs/v1alpha1/archiveorder.yaml @@ -0,0 +1,13 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: ArchiveOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/archiveorder + labels: + testing.upbound.io/example-name: sample_archive_order + name: sample-archive-order +spec: + forProvider: + archiveIds: + - ${datadog_logs_archive.sample_archive_1.id} + - ${datadog_logs_archive.sample_archive_2.id} diff --git a/examples/logs/v1alpha1/custompipeline.yaml b/examples/logs/v1alpha1/custompipeline.yaml new file mode 100644 index 0000000..ac67c8b --- /dev/null +++ b/examples/logs/v1alpha1/custompipeline.yaml @@ -0,0 +1,120 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: CustomPipeline +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/custompipeline + labels: + testing.upbound.io/example-name: sample_pipeline + name: sample-pipeline +spec: + forProvider: + filter: + - query: source:foo + isEnabled: true + name: sample pipeline + processor: + - arithmeticProcessor: + - expression: (time1 - time2)*1000 + isEnabled: true + isReplaceMissing: true + name: sample arithmetic processor + target: my_arithmetic + - attributeRemapper: + - isEnabled: true + name: sample attribute processor + overrideOnConflict: false + preserveSource: true + sourceType: tag + sources: + - db.instance + target: db + targetFormat: string + targetType: attribute + - categoryProcessor: + - category: + - filter: + - query: '@severity: "."' + name: debug + - filter: + - query: '@severity: "-"' + name: verbose + isEnabled: true + name: sample category processor + target: foo.severity + - dateRemapper: + - isEnabled: true + name: sample date remapper + sources: + - _timestamp + - published_date + - geoIpParser: + - isEnabled: true + name: sample geo ip parser + sources: + - network.client.ip + target: network.client.geoip + - grokParser: + - grok: + - matchRules: Rule %{word:my_word2} %{number:my_float2} + supportRules: "" + isEnabled: true + name: sample grok parser + samples: + - sample log 1 + source: message + - lookupProcessor: + - defaultLookup: unknown service + isEnabled: true + lookupTable: + - 1,my service + name: sample lookup processor + source: service_id + target: service_name + - messageRemapper: + - isEnabled: true + name: sample message remapper + sources: + - msg + - pipeline: + - filter: + - query: source:foo + isEnabled: true + name: nested pipeline + processor: + - urlParser: + - name: sample url parser + normalizeEndingSlashes: true + sources: + - url + - extra + target: http_url + - serviceRemapper: + - isEnabled: true + name: sample service remapper + sources: + - service + - statusRemapper: + - isEnabled: true + name: sample status remapper + sources: + - info + - trace + - stringBuilderProcessor: + - isEnabled: true + isReplaceMissing: false + name: sample string builder processor + target: user_activity + template: '%{user.name} logged in at %{timestamp}' + - traceIdRemapper: + - isEnabled: true + name: sample trace id remapper + sources: + - dd.trace_id + - userAgentParser: + - isEnabled: true + isEncoded: false + name: sample user agent parser + sources: + - user + - agent + target: http_agent diff --git a/examples/logs/v1alpha1/index.yaml b/examples/logs/v1alpha1/index.yaml new file mode 100644 index 0000000..57e0086 --- /dev/null +++ b/examples/logs/v1alpha1/index.yaml @@ -0,0 +1,30 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: Index +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/index + labels: + testing.upbound.io/example-name: sample_index + name: sample-index +spec: + forProvider: + dailyLimit: 200000 + dailyLimitReset: + - resetTime: "14:00" + resetUtcOffset: "+02:00" + dailyLimitWarningThresholdPercentage: 50 + exclusionFilter: + - filter: + - query: app:coredns + sampleRate: 0.97 + isEnabled: true + name: Filter coredns logs + - filter: + - query: service:kube_apiserver + sampleRate: 1 + isEnabled: true + name: Kubernetes apiserver + filter: + - query: '*' + name: your index + retentionDays: 7 diff --git a/examples/logs/v1alpha1/indexorder.yaml b/examples/logs/v1alpha1/indexorder.yaml new file mode 100644 index 0000000..3632d58 --- /dev/null +++ b/examples/logs/v1alpha1/indexorder.yaml @@ -0,0 +1,13 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: IndexOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/indexorder + labels: + testing.upbound.io/example-name: sample_index_order + name: sample-index-order +spec: + forProvider: + indexes: + - ${datadog_logs_index.sample_index.id} + name: sample_index_order diff --git a/examples/logs/v1alpha1/integrationpipeline.yaml b/examples/logs/v1alpha1/integrationpipeline.yaml new file mode 100644 index 0000000..ea2cfc3 --- /dev/null +++ b/examples/logs/v1alpha1/integrationpipeline.yaml @@ -0,0 +1,11 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: IntegrationPipeline +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/integrationpipeline + labels: + testing.upbound.io/example-name: python + name: python +spec: + forProvider: + isEnabled: true diff --git a/examples/logs/v1alpha1/metric.yaml b/examples/logs/v1alpha1/metric.yaml new file mode 100644 index 0000000..b9ceccc --- /dev/null +++ b/examples/logs/v1alpha1/metric.yaml @@ -0,0 +1,21 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: Metric +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/metric + labels: + testing.upbound.io/example-name: testing_logs_metric + name: testing-logs-metric +spec: + forProvider: + compute: + - aggregationType: distribution + path: '@duration' + filter: + - query: service:test + groupBy: + - path: '@status' + tagName: status + - path: '@version' + tagName: version + name: testing.logs.metric diff --git a/examples/logs/v1alpha1/pipelineorder.yaml b/examples/logs/v1alpha1/pipelineorder.yaml new file mode 100644 index 0000000..0cc65e6 --- /dev/null +++ b/examples/logs/v1alpha1/pipelineorder.yaml @@ -0,0 +1,14 @@ +apiVersion: logs.datadog.upbound.io/v1alpha1 +kind: PipelineOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1alpha1/pipelineorder + labels: + testing.upbound.io/example-name: sample_pipeline_order + name: sample-pipeline-order +spec: + forProvider: + name: sample_pipeline_order + pipelines: + - ${datadog_logs_custom_pipeline.sample_pipeline.id} + - ${datadog_logs_integration_pipeline.python.id} diff --git a/examples/metric/v1alpha1/metadata.yaml b/examples/metric/v1alpha1/metadata.yaml new file mode 100644 index 0000000..3cbabb7 --- /dev/null +++ b/examples/metric/v1alpha1/metadata.yaml @@ -0,0 +1,15 @@ +apiVersion: metric.datadog.upbound.io/v1alpha1 +kind: Metadata +metadata: + annotations: + meta.upbound.io/example-id: metric/v1alpha1/metadata + labels: + testing.upbound.io/example-name: request_time + name: request-time +spec: + forProvider: + description: 99th percentile request time in milliseconds + metric: request.time + shortName: Request time + type: gauge + unit: millisecond diff --git a/examples/metric/v1alpha1/tagconfiguration.yaml b/examples/metric/v1alpha1/tagconfiguration.yaml new file mode 100644 index 0000000..28d0fcd --- /dev/null +++ b/examples/metric/v1alpha1/tagconfiguration.yaml @@ -0,0 +1,16 @@ +apiVersion: metric.datadog.upbound.io/v1alpha1 +kind: TagConfiguration +metadata: + annotations: + meta.upbound.io/example-id: metric/v1alpha1/tagconfiguration + labels: + testing.upbound.io/example-name: example_dist_metric + name: example-dist-metric +spec: + forProvider: + includePercentiles: false + metricName: example.crossplane.dist.metric + metricType: distribution + tags: + - sport + - datacenter diff --git a/examples/null/resource.yaml b/examples/null/resource.yaml deleted file mode 100644 index fa5f479..0000000 --- a/examples/null/resource.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: null.template.upbound.io/v1alpha1 -kind: Resource -metadata: - name: example -spec: - forProvider: - triggers: - example-trigger: example-value - providerConfigRef: - name: default \ No newline at end of file diff --git a/examples/providerconfig/datadog-secret.sh b/examples/providerconfig/datadog-secret.sh new file mode 100755 index 0000000..e4470e8 --- /dev/null +++ b/examples/providerconfig/datadog-secret.sh @@ -0,0 +1,15 @@ +cat < 3 && warnings > 10 + notifications: + - '@user' + status: high + enabled: true + message: The rule has triggered. + name: My rule + options: + - evaluationWindow: 300 + keepAlive: 600 + maxSignalDuration: 900 + query: + - aggregation: count + groupByFields: + - host + name: errors + query: status:error + - aggregation: count + groupByFields: + - host + name: warnings + query: status:warning + tags: + - type:dos diff --git a/examples/sensitivedatascanner/v1alpha1/group.yaml b/examples/sensitivedatascanner/v1alpha1/group.yaml new file mode 100644 index 0000000..82ff937 --- /dev/null +++ b/examples/sensitivedatascanner/v1alpha1/group.yaml @@ -0,0 +1,17 @@ +apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 +kind: Group +metadata: + annotations: + meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/group + labels: + testing.upbound.io/example-name: mygroup + name: mygroup +spec: + forProvider: + description: A relevant description + filter: + - query: service:my-service + isEnabled: true + name: My new scanning group + productList: + - apm diff --git a/examples/sensitivedatascanner/v1alpha1/grouporder.yaml b/examples/sensitivedatascanner/v1alpha1/grouporder.yaml new file mode 100644 index 0000000..14e9a29 --- /dev/null +++ b/examples/sensitivedatascanner/v1alpha1/grouporder.yaml @@ -0,0 +1,12 @@ +apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 +kind: GroupOrder +metadata: + annotations: + meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/grouporder + labels: + testing.upbound.io/example-name: mygrouporder + name: mygrouporder +spec: + forProvider: + groupIds: + - xFwkbB3BTcmfh0VuHp0gcg diff --git a/examples/sensitivedatascanner/v1alpha1/rule.yaml b/examples/sensitivedatascanner/v1alpha1/rule.yaml new file mode 100644 index 0000000..9f4a3c8 --- /dev/null +++ b/examples/sensitivedatascanner/v1alpha1/rule.yaml @@ -0,0 +1,28 @@ +apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 +kind: Rule +metadata: + annotations: + meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/rule + labels: + testing.upbound.io/example-name: myrule + name: myrule +spec: + forProvider: + description: Another description + excludedNamespaces: + - username + groupId: xFwkbB3BTcmfh0VuHp0gcg + includedKeywordConfiguration: + - characterCount: 30 + keywords: + - cc + - credit card + isEnabled: true + name: My new rule + pattern: myregex + tags: + - sensitive_data:true + textReplacement: + - numberOfChars: 0 + replacementString: "" + type: hash diff --git a/examples/storeconfig/vault.yaml b/examples/storeconfig/vault.yaml deleted file mode 100644 index e19a9a5..0000000 --- a/examples/storeconfig/vault.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: template.upbound.io/v1alpha1 -kind: StoreConfig -metadata: - name: vault -spec: - type: Vault - defaultScope: crossplane-system - vault: - server: http://vault.vault-system:8200 - mountPath: kv2/ - version: v2 - auth: - method: Token - token: - source: Secret - secretRef: - namespace: crossplane-system - name: vault-token - key: token \ No newline at end of file diff --git a/examples/synthetics/v1alpha1/concurrencycap.yaml b/examples/synthetics/v1alpha1/concurrencycap.yaml new file mode 100644 index 0000000..c554aeb --- /dev/null +++ b/examples/synthetics/v1alpha1/concurrencycap.yaml @@ -0,0 +1,11 @@ +apiVersion: synthetics.datadog.upbound.io/v1alpha1 +kind: ConcurrencyCap +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1alpha1/concurrencycap + labels: + testing.upbound.io/example-name: this + name: this +spec: + forProvider: + onDemandConcurrencyCap: 1 diff --git a/examples/synthetics/v1alpha1/globalvariable.yaml b/examples/synthetics/v1alpha1/globalvariable.yaml new file mode 100644 index 0000000..d6a738c --- /dev/null +++ b/examples/synthetics/v1alpha1/globalvariable.yaml @@ -0,0 +1,19 @@ +apiVersion: synthetics.datadog.upbound.io/v1alpha1 +kind: GlobalVariable +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1alpha1/globalvariable + labels: + testing.upbound.io/example-name: test_variable + name: test-variable +spec: + forProvider: + description: Description of the variable + name: EXAMPLE_VARIABLE + tags: + - foo:bar + - env:test + valueSecretRef: + key: example-key + name: example-secret + namespace: upbound-system diff --git a/examples/synthetics/v1alpha1/privatelocation.yaml b/examples/synthetics/v1alpha1/privatelocation.yaml new file mode 100644 index 0000000..7e28d56 --- /dev/null +++ b/examples/synthetics/v1alpha1/privatelocation.yaml @@ -0,0 +1,15 @@ +apiVersion: synthetics.datadog.upbound.io/v1alpha1 +kind: PrivateLocation +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1alpha1/privatelocation + labels: + testing.upbound.io/example-name: private_location + name: private-location +spec: + forProvider: + description: Description of the private location + name: First private location + tags: + - foo:bar + - env:test diff --git a/go.mod b/go.mod index 2f3a492..9b63080 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,14 @@ -module github.com/upbound/upjet-provider-template +module github.com/upbound/provider-datadog -go 1.19 +go 1.21 require ( + dario.cat/mergo v1.0.0 github.com/crossplane/crossplane-runtime v1.14.0-rc.0.0.20231011070344-cc691421c2e5 github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79 - github.com/crossplane/upjet v0.11.0-rc.0.0.20231012093706-c4a76d2a7505 + github.com/crossplane/upjet v1.2.0 + github.com/google/uuid v1.3.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 github.com/pkg/errors v0.9.1 gopkg.in/alecthomas/kingpin.v2 v2.2.6 k8s.io/apimachinery v0.28.2 @@ -15,13 +18,12 @@ require ( ) require ( - dario.cat/mergo v1.0.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/antchfx/htmlquery v1.2.4 // indirect github.com/antchfx/xpath v1.2.0 // indirect - github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/dave/jennifer v1.4.1 // indirect @@ -44,19 +46,20 @@ require ( github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect - github.com/hashicorp/go-hclog v1.2.1 // indirect - github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-plugin v1.5.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/hcl/v2 v2.14.1 // indirect + github.com/hashicorp/hcl/v2 v2.19.1 // indirect github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-json v0.14.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.14.0 // indirect - github.com/hashicorp/terraform-plugin-log v0.7.0 // indirect - github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0 // indirect + github.com/hashicorp/terraform-json v0.17.1 // indirect + github.com/hashicorp/terraform-plugin-framework v1.4.1 // indirect + github.com/hashicorp/terraform-plugin-go v0.19.0 // indirect + github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect + github.com/hashicorp/terraform-registry-address v0.2.2 // indirect + github.com/hashicorp/terraform-svchost v0.1.1 // indirect + github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect github.com/iancoleman/strcase v0.2.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -76,6 +79,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7 // indirect + github.com/oklog/run v1.0.0 // indirect github.com/prometheus/client_golang v1.16.0 // indirect github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common v0.44.0 // indirect @@ -85,19 +89,20 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/tmccombs/hcl2json v0.3.3 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect - github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect - github.com/vmihailenco/tagparser v0.1.1 // indirect + github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/yuin/goldmark v1.4.13 // indirect - github.com/zclconf/go-cty v1.11.0 // indirect + github.com/zclconf/go-cty v1.14.1 // indirect + github.com/zclconf/go-cty-yaml v1.0.3 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.15.0 // indirect + golang.org/x/mod v0.13.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.10.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/term v0.12.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/term v0.13.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 0fff85b..d173e7d 100644 --- a/go.sum +++ b/go.sum @@ -53,14 +53,16 @@ github.com/antchfx/htmlquery v1.2.4/go.mod h1:2xO6iu3EVWs7R2JYqBbp8YzG50gj/ofqs5 github.com/antchfx/xpath v1.2.0 h1:mbwv7co+x0RwgeGAOHdrKy89GvHaGvxxBtPK0uF9Zr8= github.com/antchfx/xpath v1.2.0/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -77,8 +79,8 @@ github.com/crossplane/crossplane-runtime v1.14.0-rc.0.0.20231011070344-cc691421c github.com/crossplane/crossplane-runtime v1.14.0-rc.0.0.20231011070344-cc691421c2e5/go.mod h1:kCS5576be8g++HhiDGEBUw+8nkW8p4jhURYeC0zx8jM= github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79 h1:HigXs5tEQxWz0fcj8hzbU2UAZgEM7wPe0XRFOsrtF8Y= github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79/go.mod h1:+e4OaFlOcmr0JvINHl/yvEYBrZawzTgj6pQumOH1SS0= -github.com/crossplane/upjet v0.11.0-rc.0.0.20231012093706-c4a76d2a7505 h1:eCmYgfRopVn6r8RM1Ra4XQAPwVsjTGfktBj2Dk7yy+Y= -github.com/crossplane/upjet v0.11.0-rc.0.0.20231012093706-c4a76d2a7505/go.mod h1:Ov+eoYS2n0Zge/E50zm65meOTYbAHnU6jPt27fQrpbc= +github.com/crossplane/upjet v1.2.0 h1:vGV+//ZNN7ym3ClSnoX9YV+GRJJa18gjwvuFl7OpO9A= +github.com/crossplane/upjet v1.2.0/go.mod h1:0bHLtnejZ9bDeyXuBb9MSOQLvKo3+aoTeUBO8N0dGSA= github.com/dave/jennifer v1.4.1 h1:XyqG6cn5RQsTj3qlWQTKlRGAyrTcsk1kUmWdZBzRjDw= github.com/dave/jennifer v1.4.1/go.mod h1:7jEdnm+qBcxl8PC0zyp7vxcpSRnzXSt9r39tpTVGlwA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -93,6 +95,7 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= +github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= @@ -117,6 +120,7 @@ github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= @@ -172,7 +176,6 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8/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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -192,6 +195,7 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 h1:pUa4ghanp6q4IJHwE9RwLgmVFfReJN+KbQ8ExNEUUoQ= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -199,35 +203,39 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= -github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= -github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-plugin v1.5.1 h1:oGm7cWBaYIp3lJpx1RUEfLWophprE2EV/KUeqBYo+6k= +github.com/hashicorp/go-plugin v1.5.1/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= -github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= -github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= +github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s= -github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= -github.com/hashicorp/terraform-plugin-go v0.14.0 h1:ttnSlS8bz3ZPYbMb84DpcPhY4F5DsQtcAS7cHo8uvP4= -github.com/hashicorp/terraform-plugin-go v0.14.0/go.mod h1:2nNCBeRLaenyQEi78xrGrs9hMbulveqG/zDMQSvVJTE= -github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs= -github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0 h1:FtCLTiTcykdsURXPt/ku7fYXm3y19nbzbZcUxHx9RbI= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0/go.mod h1:80wf5oad1tW+oLnbXS4UTYmDCrl7BuN1Q+IA91X1a4Y= +github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA= +github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o= +github.com/hashicorp/terraform-plugin-framework v1.4.1 h1:ZC29MoB3Nbov6axHdgPbMz7799pT5H8kIrM8YAsaVrs= +github.com/hashicorp/terraform-plugin-framework v1.4.1/go.mod h1:XC0hPcQbBvlbxwmjxuV/8sn8SbZRg4XwGMs22f+kqV0= +github.com/hashicorp/terraform-plugin-go v0.19.0 h1:BuZx/6Cp+lkmiG0cOBk6Zps0Cb2tmqQpDM3iAtnhDQU= +github.com/hashicorp/terraform-plugin-go v0.19.0/go.mod h1:EhRSkEPNoylLQntYsk5KrDHTZJh9HQoumZXbOGOXmec= +github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= +github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 h1:X7vB6vn5tON2b49ILa4W7mFAsndeqJ7bZFOGbVO+0Cc= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0/go.mod h1:ydFcxbdj6klCqYEPkPvdvFKiNGKZLUs+896ODUXCyao= +github.com/hashicorp/terraform-registry-address v0.2.2 h1:lPQBg403El8PPicg/qONZJDC6YlgCVbWDtNmmZKtBno= +github.com/hashicorp/terraform-registry-address v0.2.2/go.mod h1:LtwNbCihUoUZ3RYriyS2wF/lGPB6gF9ICLRtuDk7hSo= +github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= +github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -237,6 +245,8 @@ github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+h github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -249,6 +259,7 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -291,11 +302,16 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7 h1:CxRHKnh1YJXgNKxcos9rrKL6AcmOl1AS/fygmxFDzh4= github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7/go.mod h1:SAAdeMEiFXR8LcHffvIdiLI1w243DCH2DuHq7UrA5YQ= -github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -313,8 +329,9 @@ github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+Pymzi github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= @@ -330,21 +347,25 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tmccombs/hcl2json v0.3.3 h1:+DLNYqpWE0CsOQiEZu+OZm5ZBImake3wtITYxQ8uLFQ= github.com/tmccombs/hcl2json v0.3.3/go.mod h1:Y2chtz2x9bAeRTvSibVRVgbLJhLJXKlUeIvjeVdnm4w= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= +github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -355,10 +376,11 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.8.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.11.0 h1:726SxLdi2SDnjY+BStqB9J1hNp4+2WlzyXLuimibIe0= -github.com/zclconf/go-cty v1.11.0/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA= +github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= +github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty-yaml v1.0.3 h1:og/eOQ7lvA/WWhHGFETVWNduJM7Rjsv2RRpx1sdFMLc= +github.com/zclconf/go-cty-yaml v1.0.3/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -368,6 +390,7 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= @@ -418,8 +441,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -455,8 +478,8 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -480,6 +503,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -524,11 +548,11 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -538,8 +562,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -711,6 +735,7 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/internal/clients/template.go b/internal/clients/datadog.go similarity index 52% rename from internal/clients/template.go rename to internal/clients/datadog.go index 078f7ec..bdf1174 100644 --- a/internal/clients/template.go +++ b/internal/clients/datadog.go @@ -9,22 +9,34 @@ import ( "encoding/json" "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/upjet/pkg/terraform" "github.com/pkg/errors" + "github.com/upbound/provider-datadog/apis/v1beta1" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" - - "github.com/crossplane/upjet/pkg/terraform" - - "github.com/upbound/upjet-provider-template/apis/v1beta1" ) const ( + // provider config + // source: https://registry.terraform.io/providers/DataDog/datadog/latest/docs + + // arguments + keyAPIKey = "api_key" + keyAPIURL = "api_url" + keyAppKey = "app_key" + keyHTTPClientRetryBackoffBase = "http_client_retry_backoff_base" + keyHTTPClientRetryBackoffMultiplier = "http_client_retry_backoff_multiplier" + keyHTTPClientRetryEnabled = "http_client_retry_enabled" + keyHTTPClientRetryMaxRetries = "http_client_retry_max_retries " + keyHTTPClientRetryTimeout = "http_client_retry_timeout" + keyValidate = "validate" + // error messages errNoProviderConfig = "no providerConfigRef provided" errGetProviderConfig = "cannot get referenced ProviderConfig" errTrackUsage = "cannot track ProviderConfig usage" errExtractCredentials = "cannot extract credentials" - errUnmarshalCredentials = "cannot unmarshal template credentials as JSON" + errUnmarshalCredentials = "cannot unmarshal datadog credentials as JSON" ) // TerraformSetupBuilder builds Terraform a terraform.SetupFn function which @@ -62,11 +74,35 @@ func TerraformSetupBuilder(version, providerSource, providerVersion string) terr return ps, errors.Wrap(err, errUnmarshalCredentials) } - // Set credentials in Terraform provider configuration. - /*ps.Configuration = map[string]any{ - "username": creds["username"], - "password": creds["password"], - }*/ + // Set provider configuration + ps.Configuration = map[string]any{} + if v, ok := creds[keyAPIKey]; ok { + ps.Configuration[keyAPIKey] = v + } + if v, ok := creds[keyAPIURL]; ok { + ps.Configuration[keyAPIURL] = v + } + if v, ok := creds[keyAppKey]; ok { + ps.Configuration[keyAppKey] = v + } + if v, ok := creds[keyHTTPClientRetryBackoffBase]; ok { + ps.Configuration[keyHTTPClientRetryBackoffBase] = v + } + if v, ok := creds[keyHTTPClientRetryBackoffMultiplier]; ok { + ps.Configuration[keyHTTPClientRetryBackoffMultiplier] = v + } + if v, ok := creds[keyHTTPClientRetryEnabled]; ok { + ps.Configuration[keyHTTPClientRetryEnabled] = v + } + if v, ok := creds[keyHTTPClientRetryMaxRetries]; ok { + ps.Configuration[keyHTTPClientRetryMaxRetries] = v + } + if v, ok := creds[keyHTTPClientRetryTimeout]; ok { + ps.Configuration[keyHTTPClientRetryTimeout] = v + } + if v, ok := creds[keyValidate]; ok { + ps.Configuration[keyValidate] = v + } return ps, nil } } diff --git a/internal/controller/apm/retentionfilter/zz_controller.go b/internal/controller/apm/retentionfilter/zz_controller.go new file mode 100755 index 0000000..8c5e192 --- /dev/null +++ b/internal/controller/apm/retentionfilter/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package retentionfilter + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/apm/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles RetentionFilter managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.RetentionFilter_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.RetentionFilter_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.RetentionFilter_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_apm_retention_filter"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.RetentionFilter + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.RetentionFilter{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.RetentionFilter") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.RetentionFilter_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.RetentionFilter{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/apm/retentionfilterorder/zz_controller.go b/internal/controller/apm/retentionfilterorder/zz_controller.go new file mode 100755 index 0000000..78bc48f --- /dev/null +++ b/internal/controller/apm/retentionfilterorder/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package retentionfilterorder + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/apm/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles RetentionFilterOrder managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.RetentionFilterOrder_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.RetentionFilterOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.RetentionFilterOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_apm_retention_filter_order"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.RetentionFilterOrder + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.RetentionFilterOrder{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.RetentionFilterOrder") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.RetentionFilterOrder_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.RetentionFilterOrder{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/cloud/configurationrule/zz_controller.go b/internal/controller/cloud/configurationrule/zz_controller.go new file mode 100755 index 0000000..2c6a385 --- /dev/null +++ b/internal/controller/cloud/configurationrule/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package configurationrule + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/cloud/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ConfigurationRule managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ConfigurationRule_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ConfigurationRule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ConfigurationRule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_cloud_configuration_rule"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ConfigurationRule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ConfigurationRule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConfigurationRule") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConfigurationRule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ConfigurationRule{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/cloud/workloadsecurityagentrule/zz_controller.go b/internal/controller/cloud/workloadsecurityagentrule/zz_controller.go new file mode 100755 index 0000000..07bdf46 --- /dev/null +++ b/internal/controller/cloud/workloadsecurityagentrule/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package workloadsecurityagentrule + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/cloud/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles WorkloadSecurityAgentRule managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.WorkloadSecurityAgentRule_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.WorkloadSecurityAgentRule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.WorkloadSecurityAgentRule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_cloud_workload_security_agent_rule"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.WorkloadSecurityAgentRule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.WorkloadSecurityAgentRule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.WorkloadSecurityAgentRule") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.WorkloadSecurityAgentRule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.WorkloadSecurityAgentRule{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/apikey/zz_controller.go b/internal/controller/datadog/apikey/zz_controller.go new file mode 100755 index 0000000..605f25f --- /dev/null +++ b/internal/controller/datadog/apikey/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package apikey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles APIKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.APIKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.APIKey_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.APIKey_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_api_key"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.APIKey + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.APIKey{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.APIKey") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.APIKey_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.APIKey{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/appkey/zz_controller.go b/internal/controller/datadog/appkey/zz_controller.go new file mode 100755 index 0000000..a4e8b7f --- /dev/null +++ b/internal/controller/datadog/appkey/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package appkey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles AppKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.AppKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.AppKey_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.AppKey_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_application_key"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.AppKey + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.AppKey{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AppKey") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AppKey_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.AppKey{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/authnmapping/zz_controller.go b/internal/controller/datadog/authnmapping/zz_controller.go new file mode 100755 index 0000000..3ca1b28 --- /dev/null +++ b/internal/controller/datadog/authnmapping/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package authnmapping + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles AuthnMapping managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.AuthnMapping_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.AuthnMapping_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.AuthnMapping_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_authn_mapping"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.AuthnMapping + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.AuthnMapping{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AuthnMapping") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AuthnMapping_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.AuthnMapping{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/childorganization/zz_controller.go b/internal/controller/datadog/childorganization/zz_controller.go new file mode 100755 index 0000000..d5b33e0 --- /dev/null +++ b/internal/controller/datadog/childorganization/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package childorganization + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ChildOrganization managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ChildOrganization_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ChildOrganization_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ChildOrganization_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_child_organization"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ChildOrganization + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ChildOrganization{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ChildOrganization") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ChildOrganization_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ChildOrganization{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/dashboardjson/zz_controller.go b/internal/controller/datadog/dashboardjson/zz_controller.go new file mode 100755 index 0000000..95130c4 --- /dev/null +++ b/internal/controller/datadog/dashboardjson/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package dashboardjson + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles DashboardJSON managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.DashboardJSON_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.DashboardJSON_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.DashboardJSON_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_dashboard_json"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.DashboardJSON + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.DashboardJSON{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.DashboardJSON") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.DashboardJSON_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.DashboardJSON{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/dashboardlist/zz_controller.go b/internal/controller/datadog/dashboardlist/zz_controller.go new file mode 100755 index 0000000..b3568a5 --- /dev/null +++ b/internal/controller/datadog/dashboardlist/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package dashboardlist + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles DashboardList managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.DashboardList_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.DashboardList_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.DashboardList_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_dashboard_list"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.DashboardList + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.DashboardList{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.DashboardList") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.DashboardList_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.DashboardList{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/null/resource/zz_controller.go b/internal/controller/datadog/downtime/zz_controller.go similarity index 70% rename from internal/controller/null/resource/zz_controller.go rename to internal/controller/datadog/downtime/zz_controller.go index 8dedab8..9c6f49c 100755 --- a/internal/controller/null/resource/zz_controller.go +++ b/internal/controller/datadog/downtime/zz_controller.go @@ -8,7 +8,7 @@ Copyright 2022 Upbound Inc. // Code generated by upjet. DO NOT EDIT. -package resource +package downtime import ( "time" @@ -21,24 +21,25 @@ import ( tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/upjet-provider-template/apis/null/v1alpha1" - features "github.com/upbound/upjet-provider-template/internal/features" + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" ) -// Setup adds a controller that reconciles Resource managed resources. +// Setup adds a controller that reconciles Downtime managed resources. func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { - name := managed.ControllerName(v1alpha1.Resource_GroupVersionKind.String()) + name := managed.ControllerName(v1alpha1.Downtime_GroupVersionKind.String()) var initializers managed.InitializerChain cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } - eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Resource_GroupVersionKind))) - ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Resource_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Downtime_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Downtime_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["null_resource"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_downtime"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), @@ -55,12 +56,23 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Resource_GroupVersionKind), opts...) + + // register webhooks for the kind v1alpha1.Downtime + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Downtime{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Downtime") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Downtime_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Resource{}, eventHandler). + Watches(&v1alpha1.Downtime{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/datadog/downtimeschedule/zz_controller.go b/internal/controller/datadog/downtimeschedule/zz_controller.go new file mode 100755 index 0000000..66c9840 --- /dev/null +++ b/internal/controller/datadog/downtimeschedule/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package downtimeschedule + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles DowntimeSchedule managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.DowntimeSchedule_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.DowntimeSchedule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.DowntimeSchedule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_downtime_schedule"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.DowntimeSchedule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.DowntimeSchedule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.DowntimeSchedule") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.DowntimeSchedule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.DowntimeSchedule{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/ipallowlist/zz_controller.go b/internal/controller/datadog/ipallowlist/zz_controller.go new file mode 100755 index 0000000..d8dec9f --- /dev/null +++ b/internal/controller/datadog/ipallowlist/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package ipallowlist + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles IPAllowList managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.IPAllowList_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.IPAllowList_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.IPAllowList_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_ip_allowlist"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.IPAllowList + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.IPAllowList{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.IPAllowList") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.IPAllowList_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.IPAllowList{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/monitor/zz_controller.go b/internal/controller/datadog/monitor/zz_controller.go new file mode 100755 index 0000000..a70714c --- /dev/null +++ b/internal/controller/datadog/monitor/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package monitor + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Monitor managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Monitor_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Monitor_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Monitor_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_monitor"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Monitor + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Monitor{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Monitor") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Monitor_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Monitor{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/monitorconfigpolicy/zz_controller.go b/internal/controller/datadog/monitorconfigpolicy/zz_controller.go new file mode 100755 index 0000000..1c5b2f6 --- /dev/null +++ b/internal/controller/datadog/monitorconfigpolicy/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package monitorconfigpolicy + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles MonitorConfigPolicy managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.MonitorConfigPolicy_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.MonitorConfigPolicy_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.MonitorConfigPolicy_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_monitor_config_policy"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.MonitorConfigPolicy + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.MonitorConfigPolicy{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.MonitorConfigPolicy") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.MonitorConfigPolicy_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.MonitorConfigPolicy{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/monitorjson/zz_controller.go b/internal/controller/datadog/monitorjson/zz_controller.go new file mode 100755 index 0000000..490a081 --- /dev/null +++ b/internal/controller/datadog/monitorjson/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package monitorjson + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles MonitorJSON managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.MonitorJSON_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.MonitorJSON_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.MonitorJSON_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_monitor_json"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.MonitorJSON + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.MonitorJSON{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.MonitorJSON") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.MonitorJSON_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.MonitorJSON{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/organizationsettings/zz_controller.go b/internal/controller/datadog/organizationsettings/zz_controller.go new file mode 100755 index 0000000..b6699b1 --- /dev/null +++ b/internal/controller/datadog/organizationsettings/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package organizationsettings + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles OrganizationSettings managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.OrganizationSettings_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.OrganizationSettings_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.OrganizationSettings_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_organization_settings"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.OrganizationSettings + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.OrganizationSettings{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.OrganizationSettings") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.OrganizationSettings_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.OrganizationSettings{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/powerpack/zz_controller.go b/internal/controller/datadog/powerpack/zz_controller.go new file mode 100755 index 0000000..2bf46db --- /dev/null +++ b/internal/controller/datadog/powerpack/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package powerpack + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Powerpack managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Powerpack_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Powerpack_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Powerpack_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_powerpack"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Powerpack + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Powerpack{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Powerpack") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Powerpack_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Powerpack{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/restrictionpolicy/zz_controller.go b/internal/controller/datadog/restrictionpolicy/zz_controller.go new file mode 100755 index 0000000..801662f --- /dev/null +++ b/internal/controller/datadog/restrictionpolicy/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package restrictionpolicy + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles RestrictionPolicy managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.RestrictionPolicy_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.RestrictionPolicy_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.RestrictionPolicy_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_restriction_policy"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.RestrictionPolicy + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.RestrictionPolicy{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.RestrictionPolicy") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.RestrictionPolicy_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.RestrictionPolicy{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/role/zz_controller.go b/internal/controller/datadog/role/zz_controller.go new file mode 100755 index 0000000..bcff579 --- /dev/null +++ b/internal/controller/datadog/role/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package role + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Role managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Role_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Role_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Role_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_role"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Role + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Role{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Role") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Role_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Role{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/rumapplication/zz_controller.go b/internal/controller/datadog/rumapplication/zz_controller.go new file mode 100755 index 0000000..23bbfde --- /dev/null +++ b/internal/controller/datadog/rumapplication/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package rumapplication + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles RUMApplication managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.RUMApplication_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.RUMApplication_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.RUMApplication_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_rum_application"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.RUMApplication + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.RUMApplication{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.RUMApplication") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.RUMApplication_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.RUMApplication{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/serviceaccount/zz_controller.go b/internal/controller/datadog/serviceaccount/zz_controller.go new file mode 100755 index 0000000..a841557 --- /dev/null +++ b/internal/controller/datadog/serviceaccount/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package serviceaccount + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ServiceAccount managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ServiceAccount_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ServiceAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ServiceAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_service_account"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ServiceAccount + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ServiceAccount{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ServiceAccount") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ServiceAccount_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ServiceAccount{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/serviceaccountapplicationkey/zz_controller.go b/internal/controller/datadog/serviceaccountapplicationkey/zz_controller.go new file mode 100755 index 0000000..abecf29 --- /dev/null +++ b/internal/controller/datadog/serviceaccountapplicationkey/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package serviceaccountapplicationkey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ServiceAccountApplicationKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ServiceAccountApplicationKey_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ServiceAccountApplicationKey_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ServiceAccountApplicationKey_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_service_account_application_key"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ServiceAccountApplicationKey + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ServiceAccountApplicationKey{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ServiceAccountApplicationKey") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ServiceAccountApplicationKey_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ServiceAccountApplicationKey{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/servicedefinitionyaml/zz_controller.go b/internal/controller/datadog/servicedefinitionyaml/zz_controller.go new file mode 100755 index 0000000..4c88a19 --- /dev/null +++ b/internal/controller/datadog/servicedefinitionyaml/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package servicedefinitionyaml + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ServiceDefinitionYAML managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ServiceDefinitionYAML_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ServiceDefinitionYAML_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ServiceDefinitionYAML_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_service_definition_yaml"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ServiceDefinitionYAML + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ServiceDefinitionYAML{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ServiceDefinitionYAML") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ServiceDefinitionYAML_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ServiceDefinitionYAML{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/servicelevelobjective/zz_controller.go b/internal/controller/datadog/servicelevelobjective/zz_controller.go new file mode 100755 index 0000000..5bbc719 --- /dev/null +++ b/internal/controller/datadog/servicelevelobjective/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package servicelevelobjective + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ServiceLevelObjective managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ServiceLevelObjective_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ServiceLevelObjective_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ServiceLevelObjective_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_service_level_objective"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ServiceLevelObjective + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ServiceLevelObjective{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ServiceLevelObjective") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ServiceLevelObjective_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ServiceLevelObjective{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/slocorrection/zz_controller.go b/internal/controller/datadog/slocorrection/zz_controller.go new file mode 100755 index 0000000..e1d6aeb --- /dev/null +++ b/internal/controller/datadog/slocorrection/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package slocorrection + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles SLOCorrection managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.SLOCorrection_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.SLOCorrection_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.SLOCorrection_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_slo_correction"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.SLOCorrection + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.SLOCorrection{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.SLOCorrection") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.SLOCorrection_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.SLOCorrection{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/spansmetric/zz_controller.go b/internal/controller/datadog/spansmetric/zz_controller.go new file mode 100755 index 0000000..414b1a4 --- /dev/null +++ b/internal/controller/datadog/spansmetric/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package spansmetric + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles SpansMetric managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.SpansMetric_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.SpansMetric_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.SpansMetric_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_spans_metric"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.SpansMetric + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.SpansMetric{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.SpansMetric") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.SpansMetric_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.SpansMetric{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/team/zz_controller.go b/internal/controller/datadog/team/zz_controller.go new file mode 100755 index 0000000..330db94 --- /dev/null +++ b/internal/controller/datadog/team/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package team + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Team managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Team_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Team_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Team_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_team"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Team + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Team{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Team") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Team_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Team{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/teamlink/zz_controller.go b/internal/controller/datadog/teamlink/zz_controller.go new file mode 100755 index 0000000..d0053f4 --- /dev/null +++ b/internal/controller/datadog/teamlink/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package teamlink + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles TeamLink managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.TeamLink_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.TeamLink_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.TeamLink_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_team_link"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.TeamLink + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.TeamLink{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.TeamLink") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.TeamLink_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.TeamLink{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/teammembership/zz_controller.go b/internal/controller/datadog/teammembership/zz_controller.go new file mode 100755 index 0000000..eb46f6e --- /dev/null +++ b/internal/controller/datadog/teammembership/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package teammembership + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles TeamMembership managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.TeamMembership_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.TeamMembership_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.TeamMembership_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_team_membership"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.TeamMembership + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.TeamMembership{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.TeamMembership") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.TeamMembership_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.TeamMembership{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/teampermissionsetting/zz_controller.go b/internal/controller/datadog/teampermissionsetting/zz_controller.go new file mode 100755 index 0000000..740c82f --- /dev/null +++ b/internal/controller/datadog/teampermissionsetting/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package teampermissionsetting + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles TeamPermissionSetting managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.TeamPermissionSetting_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.TeamPermissionSetting_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.TeamPermissionSetting_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_team_permission_setting"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.TeamPermissionSetting + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.TeamPermissionSetting{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.TeamPermissionSetting") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.TeamPermissionSetting_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.TeamPermissionSetting{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/user/zz_controller.go b/internal/controller/datadog/user/zz_controller.go new file mode 100755 index 0000000..8b718ea --- /dev/null +++ b/internal/controller/datadog/user/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package user + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles User managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.User_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.User_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.User_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_user"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.User + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.User{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.User") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.User_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.User{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/webhook/zz_controller.go b/internal/controller/datadog/webhook/zz_controller.go new file mode 100755 index 0000000..669957f --- /dev/null +++ b/internal/controller/datadog/webhook/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package webhook + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Webhook managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Webhook_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Webhook_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Webhook_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_webhook"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Webhook + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Webhook{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Webhook") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Webhook_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Webhook{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/webhookcustomvariable/zz_controller.go b/internal/controller/datadog/webhookcustomvariable/zz_controller.go new file mode 100755 index 0000000..5e851f0 --- /dev/null +++ b/internal/controller/datadog/webhookcustomvariable/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package webhookcustomvariable + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles WebhookCustomVariable managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.WebhookCustomVariable_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.WebhookCustomVariable_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.WebhookCustomVariable_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_webhook_custom_variable"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.WebhookCustomVariable + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.WebhookCustomVariable{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.WebhookCustomVariable") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.WebhookCustomVariable_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.WebhookCustomVariable{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/aws/zz_controller.go b/internal/controller/integration/aws/zz_controller.go new file mode 100755 index 0000000..fc4a6be --- /dev/null +++ b/internal/controller/integration/aws/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package aws + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles AWS managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.AWS_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.AWS_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.AWS_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.AWS + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.AWS{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWS") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWS_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.AWS{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/awseventbridge/zz_controller.go b/internal/controller/integration/awseventbridge/zz_controller.go new file mode 100755 index 0000000..4f19cdf --- /dev/null +++ b/internal/controller/integration/awseventbridge/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package awseventbridge + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles AWSEventBridge managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.AWSEventBridge_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.AWSEventBridge_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.AWSEventBridge_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_event_bridge"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.AWSEventBridge + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.AWSEventBridge{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSEventBridge") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSEventBridge_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.AWSEventBridge{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/awslambdaarn/zz_controller.go b/internal/controller/integration/awslambdaarn/zz_controller.go new file mode 100755 index 0000000..df62e41 --- /dev/null +++ b/internal/controller/integration/awslambdaarn/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package awslambdaarn + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles AWSLambdaARN managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.AWSLambdaARN_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.AWSLambdaARN_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.AWSLambdaARN_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_lambda_arn"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.AWSLambdaARN + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.AWSLambdaARN{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSLambdaARN") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSLambdaARN_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.AWSLambdaARN{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/awslogcollection/zz_controller.go b/internal/controller/integration/awslogcollection/zz_controller.go new file mode 100755 index 0000000..c454ba0 --- /dev/null +++ b/internal/controller/integration/awslogcollection/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package awslogcollection + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles AWSLogCollection managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.AWSLogCollection_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.AWSLogCollection_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.AWSLogCollection_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_log_collection"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.AWSLogCollection + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.AWSLogCollection{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSLogCollection") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSLogCollection_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.AWSLogCollection{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/awstagfilter/zz_controller.go b/internal/controller/integration/awstagfilter/zz_controller.go new file mode 100755 index 0000000..f450153 --- /dev/null +++ b/internal/controller/integration/awstagfilter/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package awstagfilter + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles AWSTagFilter managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.AWSTagFilter_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.AWSTagFilter_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.AWSTagFilter_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_tag_filter"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.AWSTagFilter + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.AWSTagFilter{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSTagFilter") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSTagFilter_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.AWSTagFilter{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/azure/zz_controller.go b/internal/controller/integration/azure/zz_controller.go new file mode 100755 index 0000000..6e1db1c --- /dev/null +++ b/internal/controller/integration/azure/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package azure + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Azure managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Azure_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Azure_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Azure_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_azure"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Azure + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Azure{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Azure") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Azure_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Azure{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/cloudflareaccount/zz_controller.go b/internal/controller/integration/cloudflareaccount/zz_controller.go new file mode 100755 index 0000000..babbf78 --- /dev/null +++ b/internal/controller/integration/cloudflareaccount/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package cloudflareaccount + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles CloudflareAccount managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.CloudflareAccount_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.CloudflareAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.CloudflareAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_cloudflare_account"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.CloudflareAccount + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.CloudflareAccount{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.CloudflareAccount") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.CloudflareAccount_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.CloudflareAccount{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/confluentaccount/zz_controller.go b/internal/controller/integration/confluentaccount/zz_controller.go new file mode 100755 index 0000000..045ddc3 --- /dev/null +++ b/internal/controller/integration/confluentaccount/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package confluentaccount + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ConfluentAccount managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ConfluentAccount_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ConfluentAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ConfluentAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_confluent_account"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ConfluentAccount + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ConfluentAccount{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConfluentAccount") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConfluentAccount_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ConfluentAccount{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/confluentresource/zz_controller.go b/internal/controller/integration/confluentresource/zz_controller.go new file mode 100755 index 0000000..af8328e --- /dev/null +++ b/internal/controller/integration/confluentresource/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package confluentresource + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ConfluentResource managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ConfluentResource_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ConfluentResource_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ConfluentResource_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_confluent_resource"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ConfluentResource + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ConfluentResource{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConfluentResource") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConfluentResource_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ConfluentResource{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/fastlyaccount/zz_controller.go b/internal/controller/integration/fastlyaccount/zz_controller.go new file mode 100755 index 0000000..b81a197 --- /dev/null +++ b/internal/controller/integration/fastlyaccount/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package fastlyaccount + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles FastlyAccount managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.FastlyAccount_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.FastlyAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.FastlyAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_fastly_account"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.FastlyAccount + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.FastlyAccount{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.FastlyAccount") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.FastlyAccount_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.FastlyAccount{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/fastlyservice/zz_controller.go b/internal/controller/integration/fastlyservice/zz_controller.go new file mode 100755 index 0000000..2071a9c --- /dev/null +++ b/internal/controller/integration/fastlyservice/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package fastlyservice + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles FastlyService managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.FastlyService_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.FastlyService_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.FastlyService_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_fastly_service"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.FastlyService + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.FastlyService{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.FastlyService") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.FastlyService_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.FastlyService{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/gcp/zz_controller.go b/internal/controller/integration/gcp/zz_controller.go new file mode 100755 index 0000000..65d416d --- /dev/null +++ b/internal/controller/integration/gcp/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package gcp + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles GCP managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.GCP_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.GCP_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.GCP_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_gcp"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.GCP + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.GCP{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.GCP") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.GCP_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.GCP{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/gcpsts/zz_controller.go b/internal/controller/integration/gcpsts/zz_controller.go new file mode 100755 index 0000000..8104c3d --- /dev/null +++ b/internal/controller/integration/gcpsts/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package gcpsts + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles GCPSTS managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.GCPSTS_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.GCPSTS_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.GCPSTS_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_gcp_sts"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.GCPSTS + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.GCPSTS{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.GCPSTS") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.GCPSTS_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.GCPSTS{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/opsgenieserviceobject/zz_controller.go b/internal/controller/integration/opsgenieserviceobject/zz_controller.go new file mode 100755 index 0000000..b17755d --- /dev/null +++ b/internal/controller/integration/opsgenieserviceobject/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package opsgenieserviceobject + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles OpsgenieServiceObject managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.OpsgenieServiceObject_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.OpsgenieServiceObject_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.OpsgenieServiceObject_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_opsgenie_service_object"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.OpsgenieServiceObject + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.OpsgenieServiceObject{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.OpsgenieServiceObject") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.OpsgenieServiceObject_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.OpsgenieServiceObject{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/pagerduty/zz_controller.go b/internal/controller/integration/pagerduty/zz_controller.go new file mode 100755 index 0000000..441c7ab --- /dev/null +++ b/internal/controller/integration/pagerduty/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package pagerduty + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Pagerduty managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Pagerduty_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Pagerduty_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Pagerduty_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_pagerduty"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Pagerduty + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Pagerduty{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Pagerduty") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Pagerduty_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Pagerduty{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/pagerdutyserviceobject/zz_controller.go b/internal/controller/integration/pagerdutyserviceobject/zz_controller.go new file mode 100755 index 0000000..05a6993 --- /dev/null +++ b/internal/controller/integration/pagerdutyserviceobject/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package pagerdutyserviceobject + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles PagerdutyServiceObject managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.PagerdutyServiceObject_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.PagerdutyServiceObject_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.PagerdutyServiceObject_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_pagerduty_service_object"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.PagerdutyServiceObject + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.PagerdutyServiceObject{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.PagerdutyServiceObject") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.PagerdutyServiceObject_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.PagerdutyServiceObject{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/integration/slackchannel/zz_controller.go b/internal/controller/integration/slackchannel/zz_controller.go new file mode 100755 index 0000000..0357342 --- /dev/null +++ b/internal/controller/integration/slackchannel/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package slackchannel + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles SlackChannel managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.SlackChannel_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.SlackChannel_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.SlackChannel_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_integration_slack_channel"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.SlackChannel + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.SlackChannel{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.SlackChannel") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.SlackChannel_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.SlackChannel{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/archive/zz_controller.go b/internal/controller/logs/archive/zz_controller.go new file mode 100755 index 0000000..5d3bf79 --- /dev/null +++ b/internal/controller/logs/archive/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package archive + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Archive managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Archive_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Archive_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Archive_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_archive"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Archive + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Archive{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Archive") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Archive_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Archive{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/archiveorder/zz_controller.go b/internal/controller/logs/archiveorder/zz_controller.go new file mode 100755 index 0000000..f364333 --- /dev/null +++ b/internal/controller/logs/archiveorder/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package archiveorder + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ArchiveOrder managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ArchiveOrder_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ArchiveOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ArchiveOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_archive_order"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ArchiveOrder + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ArchiveOrder{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ArchiveOrder") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ArchiveOrder_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ArchiveOrder{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/custompipeline/zz_controller.go b/internal/controller/logs/custompipeline/zz_controller.go new file mode 100755 index 0000000..7a76601 --- /dev/null +++ b/internal/controller/logs/custompipeline/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package custompipeline + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles CustomPipeline managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.CustomPipeline_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.CustomPipeline_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.CustomPipeline_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_custom_pipeline"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.CustomPipeline + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.CustomPipeline{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.CustomPipeline") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.CustomPipeline_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.CustomPipeline{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/index/zz_controller.go b/internal/controller/logs/index/zz_controller.go new file mode 100755 index 0000000..c28fda3 --- /dev/null +++ b/internal/controller/logs/index/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package index + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Index managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Index_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Index_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Index_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_index"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Index + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Index{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Index") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Index_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Index{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/indexorder/zz_controller.go b/internal/controller/logs/indexorder/zz_controller.go new file mode 100755 index 0000000..2986c67 --- /dev/null +++ b/internal/controller/logs/indexorder/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package indexorder + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles IndexOrder managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.IndexOrder_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.IndexOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.IndexOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_index_order"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.IndexOrder + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.IndexOrder{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.IndexOrder") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.IndexOrder_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.IndexOrder{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/integrationpipeline/zz_controller.go b/internal/controller/logs/integrationpipeline/zz_controller.go new file mode 100755 index 0000000..dcd509a --- /dev/null +++ b/internal/controller/logs/integrationpipeline/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package integrationpipeline + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles IntegrationPipeline managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.IntegrationPipeline_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.IntegrationPipeline_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.IntegrationPipeline_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_integration_pipeline"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.IntegrationPipeline + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.IntegrationPipeline{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.IntegrationPipeline") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.IntegrationPipeline_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.IntegrationPipeline{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/metric/zz_controller.go b/internal/controller/logs/metric/zz_controller.go new file mode 100755 index 0000000..bd0ea36 --- /dev/null +++ b/internal/controller/logs/metric/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package metric + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Metric managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Metric_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Metric_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Metric_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_metric"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Metric + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Metric{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Metric") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Metric_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Metric{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/logs/pipelineorder/zz_controller.go b/internal/controller/logs/pipelineorder/zz_controller.go new file mode 100755 index 0000000..e819f84 --- /dev/null +++ b/internal/controller/logs/pipelineorder/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package pipelineorder + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles PipelineOrder managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.PipelineOrder_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.PipelineOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.PipelineOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_logs_pipeline_order"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.PipelineOrder + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.PipelineOrder{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.PipelineOrder") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.PipelineOrder_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.PipelineOrder{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metric/metadata/zz_controller.go b/internal/controller/metric/metadata/zz_controller.go new file mode 100755 index 0000000..2887679 --- /dev/null +++ b/internal/controller/metric/metadata/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package metadata + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/metric/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Metadata managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Metadata_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Metadata_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Metadata_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_metric_metadata"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Metadata + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Metadata{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Metadata") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Metadata_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Metadata{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/metric/tagconfiguration/zz_controller.go b/internal/controller/metric/tagconfiguration/zz_controller.go new file mode 100755 index 0000000..5bc870a --- /dev/null +++ b/internal/controller/metric/tagconfiguration/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package tagconfiguration + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/metric/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles TagConfiguration managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.TagConfiguration_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.TagConfiguration_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.TagConfiguration_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_metric_tag_configuration"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.TagConfiguration + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.TagConfiguration{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.TagConfiguration") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.TagConfiguration_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.TagConfiguration{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/providerconfig/config.go b/internal/controller/providerconfig/config.go index 73c10b4..fdd13ee 100644 --- a/internal/controller/providerconfig/config.go +++ b/internal/controller/providerconfig/config.go @@ -9,9 +9,8 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/reconciler/providerconfig" "github.com/crossplane/crossplane-runtime/pkg/resource" "github.com/crossplane/upjet/pkg/controller" + "github.com/upbound/provider-datadog/apis/v1beta1" ctrl "sigs.k8s.io/controller-runtime" - - "github.com/upbound/upjet-provider-template/apis/v1beta1" ) // Setup adds a controller that reconciles ProviderConfigs by accounting for diff --git a/internal/controller/securitymonitoring/defaultrule/zz_controller.go b/internal/controller/securitymonitoring/defaultrule/zz_controller.go new file mode 100755 index 0000000..f149395 --- /dev/null +++ b/internal/controller/securitymonitoring/defaultrule/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package defaultrule + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles DefaultRule managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.DefaultRule_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.DefaultRule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.DefaultRule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_security_monitoring_default_rule"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.DefaultRule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.DefaultRule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.DefaultRule") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.DefaultRule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.DefaultRule{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/securitymonitoring/filter/zz_controller.go b/internal/controller/securitymonitoring/filter/zz_controller.go new file mode 100755 index 0000000..4f659e6 --- /dev/null +++ b/internal/controller/securitymonitoring/filter/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package filter + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Filter managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Filter_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Filter_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Filter_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_security_monitoring_filter"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Filter + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Filter{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Filter") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Filter_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Filter{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/securitymonitoring/rule/zz_controller.go b/internal/controller/securitymonitoring/rule/zz_controller.go new file mode 100755 index 0000000..aaf41d9 --- /dev/null +++ b/internal/controller/securitymonitoring/rule/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package rule + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Rule managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Rule_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Rule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Rule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_security_monitoring_rule"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Rule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Rule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Rule") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Rule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Rule{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/sensitivedatascanner/group/zz_controller.go b/internal/controller/sensitivedatascanner/group/zz_controller.go new file mode 100755 index 0000000..8cfdbfe --- /dev/null +++ b/internal/controller/sensitivedatascanner/group/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package group + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/sensitivedatascanner/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Group managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Group_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Group_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Group_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_sensitive_data_scanner_group"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Group + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Group{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Group") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Group_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Group{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/sensitivedatascanner/grouporder/zz_controller.go b/internal/controller/sensitivedatascanner/grouporder/zz_controller.go new file mode 100755 index 0000000..1a1e57c --- /dev/null +++ b/internal/controller/sensitivedatascanner/grouporder/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package grouporder + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/sensitivedatascanner/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles GroupOrder managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.GroupOrder_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.GroupOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.GroupOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_sensitive_data_scanner_group_order"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.GroupOrder + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.GroupOrder{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.GroupOrder") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.GroupOrder_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.GroupOrder{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/sensitivedatascanner/rule/zz_controller.go b/internal/controller/sensitivedatascanner/rule/zz_controller.go new file mode 100755 index 0000000..99b7686 --- /dev/null +++ b/internal/controller/sensitivedatascanner/rule/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package rule + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/sensitivedatascanner/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Rule managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Rule_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Rule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Rule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_sensitive_data_scanner_rule"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.Rule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.Rule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Rule") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Rule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Rule{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/synthetics/concurrencycap/zz_controller.go b/internal/controller/synthetics/concurrencycap/zz_controller.go new file mode 100755 index 0000000..34af09f --- /dev/null +++ b/internal/controller/synthetics/concurrencycap/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package concurrencycap + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ConcurrencyCap managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.ConcurrencyCap_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ConcurrencyCap_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ConcurrencyCap_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_concurrency_cap"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.ConcurrencyCap + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.ConcurrencyCap{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConcurrencyCap") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConcurrencyCap_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ConcurrencyCap{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/synthetics/globalvariable/zz_controller.go b/internal/controller/synthetics/globalvariable/zz_controller.go new file mode 100755 index 0000000..ef8110e --- /dev/null +++ b/internal/controller/synthetics/globalvariable/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package globalvariable + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles GlobalVariable managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.GlobalVariable_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.GlobalVariable_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.GlobalVariable_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_global_variable"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.GlobalVariable + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.GlobalVariable{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.GlobalVariable") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.GlobalVariable_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.GlobalVariable{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/synthetics/privatelocation/zz_controller.go b/internal/controller/synthetics/privatelocation/zz_controller.go new file mode 100755 index 0000000..6d3a304 --- /dev/null +++ b/internal/controller/synthetics/privatelocation/zz_controller.go @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package privatelocation + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles PrivateLocation managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.PrivateLocation_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.PrivateLocation_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.PrivateLocation_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_private_location"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + + // register webhooks for the kind v1alpha1.PrivateLocation + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.PrivateLocation{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.PrivateLocation") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.PrivateLocation_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.PrivateLocation{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/zz_setup.go b/internal/controller/zz_setup.go index 80f7342..1dece42 100755 --- a/internal/controller/zz_setup.go +++ b/internal/controller/zz_setup.go @@ -9,16 +9,154 @@ import ( "github.com/crossplane/upjet/pkg/controller" - resource "github.com/upbound/upjet-provider-template/internal/controller/null/resource" - providerconfig "github.com/upbound/upjet-provider-template/internal/controller/providerconfig" + retentionfilter "github.com/upbound/provider-datadog/internal/controller/apm/retentionfilter" + retentionfilterorder "github.com/upbound/provider-datadog/internal/controller/apm/retentionfilterorder" + configurationrule "github.com/upbound/provider-datadog/internal/controller/cloud/configurationrule" + workloadsecurityagentrule "github.com/upbound/provider-datadog/internal/controller/cloud/workloadsecurityagentrule" + apikey "github.com/upbound/provider-datadog/internal/controller/datadog/apikey" + appkey "github.com/upbound/provider-datadog/internal/controller/datadog/appkey" + authnmapping "github.com/upbound/provider-datadog/internal/controller/datadog/authnmapping" + childorganization "github.com/upbound/provider-datadog/internal/controller/datadog/childorganization" + dashboardjson "github.com/upbound/provider-datadog/internal/controller/datadog/dashboardjson" + dashboardlist "github.com/upbound/provider-datadog/internal/controller/datadog/dashboardlist" + downtime "github.com/upbound/provider-datadog/internal/controller/datadog/downtime" + downtimeschedule "github.com/upbound/provider-datadog/internal/controller/datadog/downtimeschedule" + ipallowlist "github.com/upbound/provider-datadog/internal/controller/datadog/ipallowlist" + monitor "github.com/upbound/provider-datadog/internal/controller/datadog/monitor" + monitorconfigpolicy "github.com/upbound/provider-datadog/internal/controller/datadog/monitorconfigpolicy" + monitorjson "github.com/upbound/provider-datadog/internal/controller/datadog/monitorjson" + organizationsettings "github.com/upbound/provider-datadog/internal/controller/datadog/organizationsettings" + powerpack "github.com/upbound/provider-datadog/internal/controller/datadog/powerpack" + restrictionpolicy "github.com/upbound/provider-datadog/internal/controller/datadog/restrictionpolicy" + role "github.com/upbound/provider-datadog/internal/controller/datadog/role" + rumapplication "github.com/upbound/provider-datadog/internal/controller/datadog/rumapplication" + serviceaccount "github.com/upbound/provider-datadog/internal/controller/datadog/serviceaccount" + serviceaccountapplicationkey "github.com/upbound/provider-datadog/internal/controller/datadog/serviceaccountapplicationkey" + servicedefinitionyaml "github.com/upbound/provider-datadog/internal/controller/datadog/servicedefinitionyaml" + servicelevelobjective "github.com/upbound/provider-datadog/internal/controller/datadog/servicelevelobjective" + slocorrection "github.com/upbound/provider-datadog/internal/controller/datadog/slocorrection" + spansmetric "github.com/upbound/provider-datadog/internal/controller/datadog/spansmetric" + team "github.com/upbound/provider-datadog/internal/controller/datadog/team" + teamlink "github.com/upbound/provider-datadog/internal/controller/datadog/teamlink" + teammembership "github.com/upbound/provider-datadog/internal/controller/datadog/teammembership" + teampermissionsetting "github.com/upbound/provider-datadog/internal/controller/datadog/teampermissionsetting" + user "github.com/upbound/provider-datadog/internal/controller/datadog/user" + webhook "github.com/upbound/provider-datadog/internal/controller/datadog/webhook" + webhookcustomvariable "github.com/upbound/provider-datadog/internal/controller/datadog/webhookcustomvariable" + aws "github.com/upbound/provider-datadog/internal/controller/integration/aws" + awseventbridge "github.com/upbound/provider-datadog/internal/controller/integration/awseventbridge" + awslambdaarn "github.com/upbound/provider-datadog/internal/controller/integration/awslambdaarn" + awslogcollection "github.com/upbound/provider-datadog/internal/controller/integration/awslogcollection" + awstagfilter "github.com/upbound/provider-datadog/internal/controller/integration/awstagfilter" + azure "github.com/upbound/provider-datadog/internal/controller/integration/azure" + cloudflareaccount "github.com/upbound/provider-datadog/internal/controller/integration/cloudflareaccount" + confluentaccount "github.com/upbound/provider-datadog/internal/controller/integration/confluentaccount" + confluentresource "github.com/upbound/provider-datadog/internal/controller/integration/confluentresource" + fastlyaccount "github.com/upbound/provider-datadog/internal/controller/integration/fastlyaccount" + fastlyservice "github.com/upbound/provider-datadog/internal/controller/integration/fastlyservice" + gcp "github.com/upbound/provider-datadog/internal/controller/integration/gcp" + gcpsts "github.com/upbound/provider-datadog/internal/controller/integration/gcpsts" + opsgenieserviceobject "github.com/upbound/provider-datadog/internal/controller/integration/opsgenieserviceobject" + pagerduty "github.com/upbound/provider-datadog/internal/controller/integration/pagerduty" + pagerdutyserviceobject "github.com/upbound/provider-datadog/internal/controller/integration/pagerdutyserviceobject" + slackchannel "github.com/upbound/provider-datadog/internal/controller/integration/slackchannel" + archive "github.com/upbound/provider-datadog/internal/controller/logs/archive" + archiveorder "github.com/upbound/provider-datadog/internal/controller/logs/archiveorder" + custompipeline "github.com/upbound/provider-datadog/internal/controller/logs/custompipeline" + index "github.com/upbound/provider-datadog/internal/controller/logs/index" + indexorder "github.com/upbound/provider-datadog/internal/controller/logs/indexorder" + integrationpipeline "github.com/upbound/provider-datadog/internal/controller/logs/integrationpipeline" + metric "github.com/upbound/provider-datadog/internal/controller/logs/metric" + pipelineorder "github.com/upbound/provider-datadog/internal/controller/logs/pipelineorder" + metadata "github.com/upbound/provider-datadog/internal/controller/metric/metadata" + tagconfiguration "github.com/upbound/provider-datadog/internal/controller/metric/tagconfiguration" + providerconfig "github.com/upbound/provider-datadog/internal/controller/providerconfig" + defaultrule "github.com/upbound/provider-datadog/internal/controller/securitymonitoring/defaultrule" + filter "github.com/upbound/provider-datadog/internal/controller/securitymonitoring/filter" + rule "github.com/upbound/provider-datadog/internal/controller/securitymonitoring/rule" + group "github.com/upbound/provider-datadog/internal/controller/sensitivedatascanner/group" + grouporder "github.com/upbound/provider-datadog/internal/controller/sensitivedatascanner/grouporder" + rulesensitivedatascanner "github.com/upbound/provider-datadog/internal/controller/sensitivedatascanner/rule" + concurrencycap "github.com/upbound/provider-datadog/internal/controller/synthetics/concurrencycap" + globalvariable "github.com/upbound/provider-datadog/internal/controller/synthetics/globalvariable" + privatelocation "github.com/upbound/provider-datadog/internal/controller/synthetics/privatelocation" ) // Setup creates all controllers with the supplied logger and adds them to // the supplied manager. func Setup(mgr ctrl.Manager, o controller.Options) error { for _, setup := range []func(ctrl.Manager, controller.Options) error{ - resource.Setup, + retentionfilter.Setup, + retentionfilterorder.Setup, + configurationrule.Setup, + workloadsecurityagentrule.Setup, + apikey.Setup, + appkey.Setup, + authnmapping.Setup, + childorganization.Setup, + dashboardjson.Setup, + dashboardlist.Setup, + downtime.Setup, + downtimeschedule.Setup, + ipallowlist.Setup, + monitor.Setup, + monitorconfigpolicy.Setup, + monitorjson.Setup, + organizationsettings.Setup, + powerpack.Setup, + restrictionpolicy.Setup, + role.Setup, + rumapplication.Setup, + serviceaccount.Setup, + serviceaccountapplicationkey.Setup, + servicedefinitionyaml.Setup, + servicelevelobjective.Setup, + slocorrection.Setup, + spansmetric.Setup, + team.Setup, + teamlink.Setup, + teammembership.Setup, + teampermissionsetting.Setup, + user.Setup, + webhook.Setup, + webhookcustomvariable.Setup, + aws.Setup, + awseventbridge.Setup, + awslambdaarn.Setup, + awslogcollection.Setup, + awstagfilter.Setup, + azure.Setup, + cloudflareaccount.Setup, + confluentaccount.Setup, + confluentresource.Setup, + fastlyaccount.Setup, + fastlyservice.Setup, + gcp.Setup, + gcpsts.Setup, + opsgenieserviceobject.Setup, + pagerduty.Setup, + pagerdutyserviceobject.Setup, + slackchannel.Setup, + archive.Setup, + archiveorder.Setup, + custompipeline.Setup, + index.Setup, + indexorder.Setup, + integrationpipeline.Setup, + metric.Setup, + pipelineorder.Setup, + metadata.Setup, + tagconfiguration.Setup, providerconfig.Setup, + defaultrule.Setup, + filter.Setup, + rule.Setup, + group.Setup, + grouporder.Setup, + rulesensitivedatascanner.Setup, + concurrencycap.Setup, + globalvariable.Setup, + privatelocation.Setup, } { if err := setup(mgr, o); err != nil { return err diff --git a/package/crds/apm.datadog.upbound.io_retentionfilterorders.yaml b/package/crds/apm.datadog.upbound.io_retentionfilterorders.yaml new file mode 100644 index 0000000..389a65c --- /dev/null +++ b/package/crds/apm.datadog.upbound.io_retentionfilterorders.yaml @@ -0,0 +1,330 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: retentionfilterorders.apm.datadog.upbound.io +spec: + group: apm.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: RetentionFilterOrder + listKind: RetentionFilterOrderList + plural: retentionfilterorders + singular: retentionfilterorder + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: RetentionFilterOrder is the Schema for the RetentionFilterOrders + API. Provides a Datadog APM Retention Filters API https://docs.datadoghq.com/api/v2/apm-retention-filters/ + resource, which is used to manage Datadog APM retention filters order. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RetentionFilterOrderSpec defines the desired state of RetentionFilterOrder + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + filterIds: + description: (List of String) The filter IDs list. The order of + filters IDs in this attribute defines the overall APM retention + filters order. The filter IDs list. The order of filters IDs + in this attribute defines the overall APM retention filters + order. + items: + type: string + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + filterIds: + description: (List of String) The filter IDs list. The order of + filters IDs in this attribute defines the overall APM retention + filters order. The filter IDs list. The order of filters IDs + in this attribute defines the overall APM retention filters + order. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.filterIds is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.filterIds) + || (has(self.initProvider) && has(self.initProvider.filterIds))' + status: + description: RetentionFilterOrderStatus defines the observed state of + RetentionFilterOrder. + properties: + atProvider: + properties: + filterIds: + description: (List of String) The filter IDs list. The order of + filters IDs in this attribute defines the overall APM retention + filters order. The filter IDs list. The order of filters IDs + in this attribute defines the overall APM retention filters + order. + items: + type: string + type: array + id: + description: (String) The ID of this resource. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/apm.datadog.upbound.io_retentionfilters.yaml b/package/crds/apm.datadog.upbound.io_retentionfilters.yaml new file mode 100644 index 0000000..f6b5786 --- /dev/null +++ b/package/crds/apm.datadog.upbound.io_retentionfilters.yaml @@ -0,0 +1,412 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: retentionfilters.apm.datadog.upbound.io +spec: + group: apm.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: RetentionFilter + listKind: RetentionFilterList + plural: retentionfilters + singular: retentionfilter + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: RetentionFilter is the Schema for the RetentionFilters API. The + object describing the configuration of the retention filter to create/update. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RetentionFilterSpec defines the desired state of RetentionFilter + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + enabled: + description: (Boolean) the status of the retention filter. the + status of the retention filter. + type: boolean + filter: + description: (Block, Optional) The spans filter. Spans matching + this filter will be indexed and stored. (see below for nested + schema) The spans filter. Spans matching this filter will be + indexed and stored. + properties: + query: + description: following the span search syntax. Defaults to + "*". The search query - following the span search syntax. + Defaults to `"*"`. + type: string + type: object + filterType: + description: processing-sampling is available. Valid values are + spans-sampling-processor. The type of the retention filter, + currently only spans-processing-sampling is available. Valid + values are `spans-sampling-processor`. + type: string + name: + description: (String) The name of the retention filter. The name + of the retention filter. + type: string + rate: + description: (String) Sample rate to apply to spans going through + this retention filter as a string, a value of 1.0 keeps all + spans matching the query. Sample rate to apply to spans going + through this retention filter as a string, a value of 1.0 keeps + all spans matching the query. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + enabled: + description: (Boolean) the status of the retention filter. the + status of the retention filter. + type: boolean + filter: + description: (Block, Optional) The spans filter. Spans matching + this filter will be indexed and stored. (see below for nested + schema) The spans filter. Spans matching this filter will be + indexed and stored. + properties: + query: + description: following the span search syntax. Defaults to + "*". The search query - following the span search syntax. + Defaults to `"*"`. + type: string + type: object + filterType: + description: processing-sampling is available. Valid values are + spans-sampling-processor. The type of the retention filter, + currently only spans-processing-sampling is available. Valid + values are `spans-sampling-processor`. + type: string + name: + description: (String) The name of the retention filter. The name + of the retention filter. + type: string + rate: + description: (String) Sample rate to apply to spans going through + this retention filter as a string, a value of 1.0 keeps all + spans matching the query. Sample rate to apply to spans going + through this retention filter as a string, a value of 1.0 keeps + all spans matching the query. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.enabled is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.enabled) + || (has(self.initProvider) && has(self.initProvider.enabled))' + - message: spec.forProvider.filterType is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.filterType) + || (has(self.initProvider) && has(self.initProvider.filterType))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.rate is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.rate) + || (has(self.initProvider) && has(self.initProvider.rate))' + status: + description: RetentionFilterStatus defines the observed state of RetentionFilter. + properties: + atProvider: + properties: + enabled: + description: (Boolean) the status of the retention filter. the + status of the retention filter. + type: boolean + filter: + description: (Block, Optional) The spans filter. Spans matching + this filter will be indexed and stored. (see below for nested + schema) The spans filter. Spans matching this filter will be + indexed and stored. + properties: + query: + description: following the span search syntax. Defaults to + "*". The search query - following the span search syntax. + Defaults to `"*"`. + type: string + type: object + filterType: + description: processing-sampling is available. Valid values are + spans-sampling-processor. The type of the retention filter, + currently only spans-processing-sampling is available. Valid + values are `spans-sampling-processor`. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name of the retention filter. The name + of the retention filter. + type: string + rate: + description: (String) Sample rate to apply to spans going through + this retention filter as a string, a value of 1.0 keeps all + spans matching the query. Sample rate to apply to spans going + through this retention filter as a string, a value of 1.0 keeps + all spans matching the query. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/cloud.datadog.upbound.io_configurationrules.yaml b/package/crds/cloud.datadog.upbound.io_configurationrules.yaml new file mode 100644 index 0000000..3228d2f --- /dev/null +++ b/package/crds/cloud.datadog.upbound.io_configurationrules.yaml @@ -0,0 +1,546 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: configurationrules.cloud.datadog.upbound.io +spec: + group: cloud.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ConfigurationRule + listKind: ConfigurationRuleList + plural: configurationrules + singular: configurationrule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ConfigurationRule is the Schema for the ConfigurationRules API. + Provides a Datadog Cloud Configuration Rule resource. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConfigurationRuleSpec defines the desired state of ConfigurationRule + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + enabled: + description: (Boolean) Whether the cloud configuration rule is + enabled. Whether the cloud configuration rule is enabled. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. Defaults to empty list (see + below for nested schema) Additional queries to filter matched + events before they are processed. Defaults to empty list + items: + properties: + action: + description: (String) The type of filtering action. Valid + values are require, suppress. The type of filtering action. + Valid values are `require`, `suppress`. + type: string + query: + description: (String) Query for selecting logs to apply + the filtering action. Query for selecting logs to apply + the filtering action. + type: string + type: object + type: array + groupBy: + description: (List of String) Fields to group by when generating + signals, e.g. @resource. Defaults to empty list. Fields to group + by when generating signals, e.g. @resource. Defaults to empty + list. + items: + type: string + type: array + message: + description: (String) The message associated to the rule that + will be shown in findings and signals. The message associated + to the rule that will be shown in findings and signals. + type: string + name: + description: (String) The name of the cloud configuration rule. + The name of the cloud configuration rule. + type: string + notifications: + description: (List of String) Notification targets for signals. + Defaults to empty list. Notification targets for signals. Defaults + to empty list. + items: + type: string + type: array + policy: + description: (String) Policy written in Rego format. Policy written + in Rego format. + type: string + relatedResourceTypes: + description: (List of String) Related resource types to be checked + by the rule. Defaults to empty list. Related resource types + to be checked by the rule. Defaults to empty list. + items: + type: string + type: array + resourceType: + description: (String) Main resource type to be checked by the + rule. Main resource type to be checked by the rule. + type: string + severity: + description: (String) Severity of the rule and associated signals. + Valid values are info, low, medium, high, critical. Severity + of the rule and associated signals. Valid values are `info`, + `low`, `medium`, `high`, `critical`. + type: string + tags: + description: (List of String) Tags of the rule, propagated to + findings and signals. Defaults to empty list. Tags of the rule, + propagated to findings and signals. Defaults to empty list. + items: + type: string + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + enabled: + description: (Boolean) Whether the cloud configuration rule is + enabled. Whether the cloud configuration rule is enabled. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. Defaults to empty list (see + below for nested schema) Additional queries to filter matched + events before they are processed. Defaults to empty list + items: + properties: + action: + description: (String) The type of filtering action. Valid + values are require, suppress. The type of filtering action. + Valid values are `require`, `suppress`. + type: string + query: + description: (String) Query for selecting logs to apply + the filtering action. Query for selecting logs to apply + the filtering action. + type: string + type: object + type: array + groupBy: + description: (List of String) Fields to group by when generating + signals, e.g. @resource. Defaults to empty list. Fields to group + by when generating signals, e.g. @resource. Defaults to empty + list. + items: + type: string + type: array + message: + description: (String) The message associated to the rule that + will be shown in findings and signals. The message associated + to the rule that will be shown in findings and signals. + type: string + name: + description: (String) The name of the cloud configuration rule. + The name of the cloud configuration rule. + type: string + notifications: + description: (List of String) Notification targets for signals. + Defaults to empty list. Notification targets for signals. Defaults + to empty list. + items: + type: string + type: array + policy: + description: (String) Policy written in Rego format. Policy written + in Rego format. + type: string + relatedResourceTypes: + description: (List of String) Related resource types to be checked + by the rule. Defaults to empty list. Related resource types + to be checked by the rule. Defaults to empty list. + items: + type: string + type: array + resourceType: + description: (String) Main resource type to be checked by the + rule. Main resource type to be checked by the rule. + type: string + severity: + description: (String) Severity of the rule and associated signals. + Valid values are info, low, medium, high, critical. Severity + of the rule and associated signals. Valid values are `info`, + `low`, `medium`, `high`, `critical`. + type: string + tags: + description: (List of String) Tags of the rule, propagated to + findings and signals. Defaults to empty list. Tags of the rule, + propagated to findings and signals. Defaults to empty list. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.enabled is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.enabled) + || (has(self.initProvider) && has(self.initProvider.enabled))' + - message: spec.forProvider.message is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.message) + || (has(self.initProvider) && has(self.initProvider.message))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.policy is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.policy) + || (has(self.initProvider) && has(self.initProvider.policy))' + - message: spec.forProvider.resourceType is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.resourceType) + || (has(self.initProvider) && has(self.initProvider.resourceType))' + - message: spec.forProvider.severity is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.severity) + || (has(self.initProvider) && has(self.initProvider.severity))' + status: + description: ConfigurationRuleStatus defines the observed state of ConfigurationRule. + properties: + atProvider: + properties: + enabled: + description: (Boolean) Whether the cloud configuration rule is + enabled. Whether the cloud configuration rule is enabled. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. Defaults to empty list (see + below for nested schema) Additional queries to filter matched + events before they are processed. Defaults to empty list + items: + properties: + action: + description: (String) The type of filtering action. Valid + values are require, suppress. The type of filtering action. + Valid values are `require`, `suppress`. + type: string + query: + description: (String) Query for selecting logs to apply + the filtering action. Query for selecting logs to apply + the filtering action. + type: string + type: object + type: array + groupBy: + description: (List of String) Fields to group by when generating + signals, e.g. @resource. Defaults to empty list. Fields to group + by when generating signals, e.g. @resource. Defaults to empty + list. + items: + type: string + type: array + id: + description: (String) The ID of this resource. + type: string + message: + description: (String) The message associated to the rule that + will be shown in findings and signals. The message associated + to the rule that will be shown in findings and signals. + type: string + name: + description: (String) The name of the cloud configuration rule. + The name of the cloud configuration rule. + type: string + notifications: + description: (List of String) Notification targets for signals. + Defaults to empty list. Notification targets for signals. Defaults + to empty list. + items: + type: string + type: array + policy: + description: (String) Policy written in Rego format. Policy written + in Rego format. + type: string + relatedResourceTypes: + description: (List of String) Related resource types to be checked + by the rule. Defaults to empty list. Related resource types + to be checked by the rule. Defaults to empty list. + items: + type: string + type: array + resourceType: + description: (String) Main resource type to be checked by the + rule. Main resource type to be checked by the rule. + type: string + severity: + description: (String) Severity of the rule and associated signals. + Valid values are info, low, medium, high, critical. Severity + of the rule and associated signals. Valid values are `info`, + `low`, `medium`, `high`, `critical`. + type: string + tags: + description: (List of String) Tags of the rule, propagated to + findings and signals. Defaults to empty list. Tags of the rule, + propagated to findings and signals. Defaults to empty list. + items: + type: string + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/cloud.datadog.upbound.io_workloadsecurityagentrules.yaml b/package/crds/cloud.datadog.upbound.io_workloadsecurityagentrules.yaml new file mode 100644 index 0000000..6aae76b --- /dev/null +++ b/package/crds/cloud.datadog.upbound.io_workloadsecurityagentrules.yaml @@ -0,0 +1,356 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: workloadsecurityagentrules.cloud.datadog.upbound.io +spec: + group: cloud.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: WorkloadSecurityAgentRule + listKind: WorkloadSecurityAgentRuleList + plural: workloadsecurityagentrules + singular: workloadsecurityagentrule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: WorkloadSecurityAgentRule is the Schema for the WorkloadSecurityAgentRules + API. Provides a Datadog Cloud Workload Security Agent Rule API resource + for agent rules. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: WorkloadSecurityAgentRuleSpec defines the desired state of + WorkloadSecurityAgentRule + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) The description of the Agent rule. Defaults + to "". The description of the Agent rule. Defaults to `""`. + type: string + enabled: + description: (Boolean) Whether the Agent rule is enabled. Defaults + to true. Whether the Agent rule is enabled. Defaults to `true`. + type: boolean + expression: + description: (String) The SECL expression of the Agent rule. The + SECL expression of the Agent rule. + type: string + name: + description: (String) The name of the Agent rule. The name of + the Agent rule. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) The description of the Agent rule. Defaults + to "". The description of the Agent rule. Defaults to `""`. + type: string + enabled: + description: (Boolean) Whether the Agent rule is enabled. Defaults + to true. Whether the Agent rule is enabled. Defaults to `true`. + type: boolean + expression: + description: (String) The SECL expression of the Agent rule. The + SECL expression of the Agent rule. + type: string + name: + description: (String) The name of the Agent rule. The name of + the Agent rule. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.expression is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.expression) + || (has(self.initProvider) && has(self.initProvider.expression))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: WorkloadSecurityAgentRuleStatus defines the observed state + of WorkloadSecurityAgentRule. + properties: + atProvider: + properties: + description: + description: (String) The description of the Agent rule. Defaults + to "". The description of the Agent rule. Defaults to `""`. + type: string + enabled: + description: (Boolean) Whether the Agent rule is enabled. Defaults + to true. Whether the Agent rule is enabled. Defaults to `true`. + type: boolean + expression: + description: (String) The SECL expression of the Agent rule. The + SECL expression of the Agent rule. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name of the Agent rule. The name of + the Agent rule. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/null.template.upbound.io_resources.yaml b/package/crds/datadog.upbound.io_apikeys.yaml similarity index 89% rename from package/crds/null.template.upbound.io_resources.yaml rename to package/crds/datadog.upbound.io_apikeys.yaml index 04973c1..848ead5 100644 --- a/package/crds/null.template.upbound.io_resources.yaml +++ b/package/crds/datadog.upbound.io_apikeys.yaml @@ -4,18 +4,18 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.13.0 - name: resources.null.template.upbound.io + name: apikeys.datadog.upbound.io spec: - group: null.template.upbound.io + group: datadog.upbound.io names: categories: - crossplane - managed - - template - kind: Resource - listKind: ResourceList - plural: resources - singular: resource + - datadog + kind: APIKey + listKind: APIKeyList + plural: apikeys + singular: apikey scope: Cluster versions: - additionalPrinterColumns: @@ -34,10 +34,8 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: Resource is the Schema for the Resources API. The null_resource - resource implements the standard resource lifecycle but takes no further - action. The triggers argument allows specifying an arbitrary set of values - that, when changed, will cause the resource to be replaced. + description: APIKey is the Schema for the APIKeys API. Provides a Datadog + API Key resource. This can be used to create and manage Datadog API Keys. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -52,7 +50,7 @@ spec: metadata: type: object spec: - description: ResourceSpec defines the desired state of Resource + description: APIKeySpec defines the desired state of APIKey properties: deletionPolicy: default: Delete @@ -69,13 +67,9 @@ spec: type: string forProvider: properties: - triggers: - additionalProperties: - type: string - description: A map of arbitrary strings that, when changed, will - force the null resource to be replaced, re-running any associated - provisioners. - type: object + name: + description: (String) Name for API Key. Name for API Key. + type: string type: object initProvider: description: THIS IS A BETA FIELD. It will be honored unless the Management @@ -89,13 +83,9 @@ spec: for example because of an external controller is managing them, like an autoscaler. properties: - triggers: - additionalProperties: - type: string - description: A map of arbitrary strings that, when changed, will - force the null resource to be replaced, re-running any associated - provisioners. - type: object + name: + description: (String) Name for API Key. Name for API Key. + type: string type: object managementPolicies: default: @@ -257,20 +247,22 @@ spec: required: - forProvider type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' status: - description: ResourceStatus defines the observed state of Resource. + description: APIKeyStatus defines the observed state of APIKey. properties: atProvider: properties: id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name for API Key. Name for API Key. type: string - triggers: - additionalProperties: - type: string - description: A map of arbitrary strings that, when changed, will - force the null resource to be replaced, re-running any associated - provisioners. - type: object type: object conditions: description: Conditions of the resource. diff --git a/package/crds/datadog.upbound.io_appkeys.yaml b/package/crds/datadog.upbound.io_appkeys.yaml new file mode 100644 index 0000000..81e1481 --- /dev/null +++ b/package/crds/datadog.upbound.io_appkeys.yaml @@ -0,0 +1,314 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: appkeys.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AppKey + listKind: AppKeyList + plural: appkeys + singular: appkey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: AppKey is the Schema for the AppKeys API. Provides a Datadog + Application Key resource. This can be used to create and manage Datadog + Application Keys. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AppKeySpec defines the desired state of AppKey + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: (String) Name for Application Key. Name for Application + Key. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + name: + description: (String) Name for Application Key. Name for Application + Key. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: AppKeyStatus defines the observed state of AppKey. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name for Application Key. Name for Application + Key. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_authnmappings.yaml b/package/crds/datadog.upbound.io_authnmappings.yaml new file mode 100644 index 0000000..e870764 --- /dev/null +++ b/package/crds/datadog.upbound.io_authnmappings.yaml @@ -0,0 +1,349 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: authnmappings.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AuthnMapping + listKind: AuthnMappingList + plural: authnmappings + singular: authnmapping + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: AuthnMapping is the Schema for the AuthnMappings API. Provides + a Datadog AuthN Mappings resource. This feature lets you automatically assign + roles to users based on their SAML attributes. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AuthnMappingSpec defines the desired state of AuthnMapping + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + key: + description: (String) Identity provider key. Identity provider + key. + type: string + role: + description: (String) The ID of a role to attach to all users + with the corresponding key and value. The ID of a role to attach + to all users with the corresponding key and value. + type: string + value: + description: (String) Identity provider value. Identity provider + value. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + key: + description: (String) Identity provider key. Identity provider + key. + type: string + role: + description: (String) The ID of a role to attach to all users + with the corresponding key and value. The ID of a role to attach + to all users with the corresponding key and value. + type: string + value: + description: (String) Identity provider value. Identity provider + value. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.key is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.key) + || (has(self.initProvider) && has(self.initProvider.key))' + - message: spec.forProvider.role is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.role) + || (has(self.initProvider) && has(self.initProvider.role))' + - message: spec.forProvider.value is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.value) + || (has(self.initProvider) && has(self.initProvider.value))' + status: + description: AuthnMappingStatus defines the observed state of AuthnMapping. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + key: + description: (String) Identity provider key. Identity provider + key. + type: string + role: + description: (String) The ID of a role to attach to all users + with the corresponding key and value. The ID of a role to attach + to all users with the corresponding key and value. + type: string + value: + description: (String) Identity provider value. Identity provider + value. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_childorganizations.yaml b/package/crds/datadog.upbound.io_childorganizations.yaml new file mode 100644 index 0000000..61d01e6 --- /dev/null +++ b/package/crds/datadog.upbound.io_childorganizations.yaml @@ -0,0 +1,438 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: childorganizations.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ChildOrganization + listKind: ChildOrganizationList + plural: childorganizations + singular: childorganization + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ChildOrganization is the Schema for the ChildOrganizations API. + Provides a Datadog Child Organization resource. This can be used to create + Datadog Child Organizations. To manage created organization use datadog_organization_settings. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ChildOrganizationSpec defines the desired state of ChildOrganization + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: (String) Name for Child Organization after creation. + Name for Child Organization after creation. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + name: + description: (String) Name for Child Organization after creation. + Name for Child Organization after creation. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: ChildOrganizationStatus defines the observed state of ChildOrganization. + properties: + atProvider: + properties: + apiKey: + description: (List of Object) Datadog API key. (see below for + nested schema) Datadog API key. + items: + properties: + key: + description: (String) + type: string + name: + description: (String) Name for Child Organization after + creation. + type: string + type: object + type: array + applicationKey: + description: (List of Object) An application key with its associated + metadata. (see below for nested schema) An application key with + its associated metadata. + items: + properties: + hash: + description: (String) + type: string + name: + description: (String) Name for Child Organization after + creation. + type: string + owner: + description: (String) + type: string + type: object + type: array + description: + description: (String) Description of the organization. Description + of the organization. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name for Child Organization after creation. + Name for Child Organization after creation. + type: string + publicId: + description: (String) The public_id of the organization you are + operating within. The `public_id` of the organization you are + operating within. + type: string + settings: + description: (List of Object) Organization settings (see below + for nested schema) Organization settings + items: + properties: + privateWidgetShare: + description: (Boolean) + type: boolean + saml: + description: (List of Object) (see below for nested schema) + items: + properties: + enabled: + description: (Boolean) + type: boolean + type: object + type: array + samlAutocreateAccessRole: + description: (String) + type: string + samlAutocreateUsersDomains: + description: (List of Object) (see below for nested schema) + items: + properties: + domains: + description: (List of String) + items: + type: string + type: array + enabled: + description: (Boolean) + type: boolean + type: object + type: array + samlCanBeEnabled: + description: (Boolean) + type: boolean + samlIdpEndpoint: + description: (String) + type: string + samlIdpInitiatedLogin: + description: (List of Object) (see below for nested schema) + items: + properties: + enabled: + description: (Boolean) + type: boolean + type: object + type: array + samlIdpMetadataUploaded: + description: (Boolean) + type: boolean + samlLoginUrl: + description: (String) + type: string + samlStrictMode: + description: (List of Object) (see below for nested schema) + items: + properties: + enabled: + description: (Boolean) + type: boolean + type: object + type: array + type: object + type: array + user: + description: (List of Object) Information about a user (see below + for nested schema) Information about a user + items: + properties: + accessRole: + description: (String) + type: string + email: + description: (String) + type: string + name: + description: (String) Name for Child Organization after + creation. + type: string + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_dashboardjsons.yaml b/package/crds/datadog.upbound.io_dashboardjsons.yaml new file mode 100644 index 0000000..ef4ff85 --- /dev/null +++ b/package/crds/datadog.upbound.io_dashboardjsons.yaml @@ -0,0 +1,359 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: dashboardjsons.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DashboardJSON + listKind: DashboardJSONList + plural: dashboardjsons + singular: dashboardjson + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: DashboardJSON is the Schema for the DashboardJSONs API. Provides + a Datadog dashboard JSON resource. This can be used to create and manage + Datadog dashboards using the JSON definition. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DashboardJSONSpec defines the desired state of DashboardJSON + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + dashboard: + description: (String) The JSON formatted definition of the Dashboard. + The JSON formatted definition of the Dashboard. + type: string + dashboardLists: + description: (Set of Number) A list of dashboard lists this dashboard + belongs to. A list of dashboard lists this dashboard belongs + to. + items: + type: number + type: array + x-kubernetes-list-type: set + url: + description: (String) The URL of the dashboard. The URL of the + dashboard. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + dashboard: + description: (String) The JSON formatted definition of the Dashboard. + The JSON formatted definition of the Dashboard. + type: string + dashboardLists: + description: (Set of Number) A list of dashboard lists this dashboard + belongs to. A list of dashboard lists this dashboard belongs + to. + items: + type: number + type: array + x-kubernetes-list-type: set + url: + description: (String) The URL of the dashboard. The URL of the + dashboard. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.dashboard is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.dashboard) + || (has(self.initProvider) && has(self.initProvider.dashboard))' + status: + description: DashboardJSONStatus defines the observed state of DashboardJSON. + properties: + atProvider: + properties: + dashboard: + description: (String) The JSON formatted definition of the Dashboard. + The JSON formatted definition of the Dashboard. + type: string + dashboardLists: + description: (Set of Number) A list of dashboard lists this dashboard + belongs to. A list of dashboard lists this dashboard belongs + to. + items: + type: number + type: array + x-kubernetes-list-type: set + dashboardListsRemoved: + description: (Set of Number) The list of dashboard lists this + dashboard should be removed from. Internal only. The list of + dashboard lists this dashboard should be removed from. Internal + only. + items: + type: number + type: array + x-kubernetes-list-type: set + id: + description: (String) The ID of this resource. + type: string + url: + description: (String) The URL of the dashboard. The URL of the + dashboard. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_dashboardlists.yaml b/package/crds/datadog.upbound.io_dashboardlists.yaml new file mode 100644 index 0000000..f9cb64b --- /dev/null +++ b/package/crds/datadog.upbound.io_dashboardlists.yaml @@ -0,0 +1,371 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: dashboardlists.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DashboardList + listKind: DashboardListList + plural: dashboardlists + singular: dashboardlist + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: DashboardList is the Schema for the DashboardLists API. Provides + a Datadog dashboard_list resource. This can be used to create and manage + Datadog Dashboard Lists and the individual dashboards within them. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DashboardListSpec defines the desired state of DashboardList + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + dashItem: + description: (Block Set) A set of dashboard items that belong + to this list (see below for nested schema) A set of dashboard + items that belong to this list + items: + properties: + dashId: + description: (String) The ID of the dashboard to add The + ID of the dashboard to add + type: string + type: + description: (String) The type of this dashboard. Valid + values are custom_timeboard, custom_screenboard, integration_screenboard, + integration_timeboard, host_timeboard. The type of this + dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, + `integration_screenboard`, `integration_timeboard`, `host_timeboard`. + type: string + type: object + type: array + name: + description: (String) The name of the Dashboard List The name + of the Dashboard List + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + dashItem: + description: (Block Set) A set of dashboard items that belong + to this list (see below for nested schema) A set of dashboard + items that belong to this list + items: + properties: + dashId: + description: (String) The ID of the dashboard to add The + ID of the dashboard to add + type: string + type: + description: (String) The type of this dashboard. Valid + values are custom_timeboard, custom_screenboard, integration_screenboard, + integration_timeboard, host_timeboard. The type of this + dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, + `integration_screenboard`, `integration_timeboard`, `host_timeboard`. + type: string + type: object + type: array + name: + description: (String) The name of the Dashboard List The name + of the Dashboard List + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: DashboardListStatus defines the observed state of DashboardList. + properties: + atProvider: + properties: + dashItem: + description: (Block Set) A set of dashboard items that belong + to this list (see below for nested schema) A set of dashboard + items that belong to this list + items: + properties: + dashId: + description: (String) The ID of the dashboard to add The + ID of the dashboard to add + type: string + type: + description: (String) The type of this dashboard. Valid + values are custom_timeboard, custom_screenboard, integration_screenboard, + integration_timeboard, host_timeboard. The type of this + dashboard. Valid values are `custom_timeboard`, `custom_screenboard`, + `integration_screenboard`, `integration_timeboard`, `host_timeboard`. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name of the Dashboard List The name + of the Dashboard List + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_downtimes.yaml b/package/crds/datadog.upbound.io_downtimes.yaml new file mode 100644 index 0000000..6bc652a --- /dev/null +++ b/package/crds/datadog.upbound.io_downtimes.yaml @@ -0,0 +1,681 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: downtimes.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Downtime + listKind: DowntimeList + plural: downtimes + singular: downtime + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Downtime is the Schema for the Downtimes API. This resource is + deprecated — use the datadog_downtime_schedule resource instead. Provides + a Datadog downtime resource. This can be used to create and manage Datadog + downtimes. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DowntimeSpec defines the desired state of Downtime + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + end: + description: (Number) Optionally specify an end date when this + downtime should expire. Accepts a Unix timestamp in UTC. Optionally + specify an end date when this downtime should expire. Accepts + a Unix timestamp in UTC. + type: number + endDate: + description: (String) String representing date and time to end + the downtime in RFC3339 format. String representing date and + time to end the downtime in RFC3339 format. + type: string + message: + description: (String) An optional message to provide when creating + the downtime, can include notification handles An optional message + to provide when creating the downtime, can include notification + handles + type: string + monitorId: + description: (Number) When specified, this downtime will only + apply to this monitor When specified, this downtime will only + apply to this monitor + type: number + monitorTags: + description: (Set of String) A list of monitor tags (up to 32) + to base the scheduled downtime on. Only monitors that have all + selected tags are silenced A list of monitor tags (up to 32) + to base the scheduled downtime on. Only monitors that have all + selected tags are silenced + items: + type: string + type: array + x-kubernetes-list-type: set + muteFirstRecoveryNotification: + description: (Boolean) When true the first recovery notification + during the downtime will be muted Defaults to false. When true + the first recovery notification during the downtime will be + muted Defaults to `false`. + type: boolean + recurrence: + description: '(Block List, Max: 1) Optional recurring schedule + for this downtime (see below for nested schema) Optional recurring + schedule for this downtime' + items: + properties: + period: + description: (Number) How often to repeat as an integer. + For example to repeat every 3 days, select a type of days + and a period of 3. How often to repeat as an integer. + For example to repeat every 3 days, select a `type` of + `days` and a `period` of `3`. + type: number + rrule: + description: (String) The RRULE standard for defining recurring + events. For example, to have a recurring event on the + first day of each month, use FREQ=MONTHLY;INTERVAL=1. + Most common rrule options from the iCalendar Spec are + supported. Attributes specifying the duration in RRULE + are not supported (for example, DTSTART, DTEND, DURATION). + Only applicable when type is rrule. The RRULE standard + for defining recurring events. For example, to have a + recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. + Most common rrule options from the iCalendar Spec are + supported. Attributes specifying the duration in RRULE + are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). + Only applicable when `type` is `rrule`. + type: string + type: + description: (String) One of days, weeks, months, years, + or rrule. One of `days`, `weeks`, `months`, `years`, or + `rrule`. + type: string + untilDate: + description: (Number) The date at which the recurrence should + end as a POSIX timestamp. until_occurrences and until_date + are mutually exclusive. The date at which the recurrence + should end as a POSIX timestamp. `until_occurrences` and + `until_date` are mutually exclusive. + type: number + untilOccurrences: + description: (Number) How many times the downtime will be + rescheduled. until_occurrences and until_date are mutually + exclusive. How many times the downtime will be rescheduled. + `until_occurrences` and `until_date` are mutually exclusive. + type: number + weekDays: + description: '(List of String) A list of week days to repeat + on. Choose from: Mon, Tue, Wed, Thu, Fri, Sat or Sun. + Only applicable when type is weeks. First letter must + be capitalized. A list of week days to repeat on. Choose + from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. + Only applicable when `type` is `weeks`. First letter must + be capitalized.' + items: + type: string + type: array + type: object + type: array + scope: + description: (List of String) specify the group scope to which + this downtime applies. For everything use '*' specify the group + scope to which this downtime applies. For everything use '*' + items: + type: string + type: array + start: + description: (Number) Specify when this downtime should start. + Accepts a Unix timestamp in UTC. Specify when this downtime + should start. Accepts a Unix timestamp in UTC. + type: number + startDate: + description: (String) String representing date and time to start + the downtime in RFC3339 format. String representing date and + time to start the downtime in RFC3339 format. + type: string + timezone: + description: (String) The timezone for the downtime. Follows IANA + timezone database identifiers. Defaults to "UTC". The timezone + for the downtime. Follows IANA timezone database identifiers. + Defaults to `"UTC"`. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + end: + description: (Number) Optionally specify an end date when this + downtime should expire. Accepts a Unix timestamp in UTC. Optionally + specify an end date when this downtime should expire. Accepts + a Unix timestamp in UTC. + type: number + endDate: + description: (String) String representing date and time to end + the downtime in RFC3339 format. String representing date and + time to end the downtime in RFC3339 format. + type: string + message: + description: (String) An optional message to provide when creating + the downtime, can include notification handles An optional message + to provide when creating the downtime, can include notification + handles + type: string + monitorId: + description: (Number) When specified, this downtime will only + apply to this monitor When specified, this downtime will only + apply to this monitor + type: number + monitorTags: + description: (Set of String) A list of monitor tags (up to 32) + to base the scheduled downtime on. Only monitors that have all + selected tags are silenced A list of monitor tags (up to 32) + to base the scheduled downtime on. Only monitors that have all + selected tags are silenced + items: + type: string + type: array + x-kubernetes-list-type: set + muteFirstRecoveryNotification: + description: (Boolean) When true the first recovery notification + during the downtime will be muted Defaults to false. When true + the first recovery notification during the downtime will be + muted Defaults to `false`. + type: boolean + recurrence: + description: '(Block List, Max: 1) Optional recurring schedule + for this downtime (see below for nested schema) Optional recurring + schedule for this downtime' + items: + properties: + period: + description: (Number) How often to repeat as an integer. + For example to repeat every 3 days, select a type of days + and a period of 3. How often to repeat as an integer. + For example to repeat every 3 days, select a `type` of + `days` and a `period` of `3`. + type: number + rrule: + description: (String) The RRULE standard for defining recurring + events. For example, to have a recurring event on the + first day of each month, use FREQ=MONTHLY;INTERVAL=1. + Most common rrule options from the iCalendar Spec are + supported. Attributes specifying the duration in RRULE + are not supported (for example, DTSTART, DTEND, DURATION). + Only applicable when type is rrule. The RRULE standard + for defining recurring events. For example, to have a + recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. + Most common rrule options from the iCalendar Spec are + supported. Attributes specifying the duration in RRULE + are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). + Only applicable when `type` is `rrule`. + type: string + type: + description: (String) One of days, weeks, months, years, + or rrule. One of `days`, `weeks`, `months`, `years`, or + `rrule`. + type: string + untilDate: + description: (Number) The date at which the recurrence should + end as a POSIX timestamp. until_occurrences and until_date + are mutually exclusive. The date at which the recurrence + should end as a POSIX timestamp. `until_occurrences` and + `until_date` are mutually exclusive. + type: number + untilOccurrences: + description: (Number) How many times the downtime will be + rescheduled. until_occurrences and until_date are mutually + exclusive. How many times the downtime will be rescheduled. + `until_occurrences` and `until_date` are mutually exclusive. + type: number + weekDays: + description: '(List of String) A list of week days to repeat + on. Choose from: Mon, Tue, Wed, Thu, Fri, Sat or Sun. + Only applicable when type is weeks. First letter must + be capitalized. A list of week days to repeat on. Choose + from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. + Only applicable when `type` is `weeks`. First letter must + be capitalized.' + items: + type: string + type: array + type: object + type: array + scope: + description: (List of String) specify the group scope to which + this downtime applies. For everything use '*' specify the group + scope to which this downtime applies. For everything use '*' + items: + type: string + type: array + start: + description: (Number) Specify when this downtime should start. + Accepts a Unix timestamp in UTC. Specify when this downtime + should start. Accepts a Unix timestamp in UTC. + type: number + startDate: + description: (String) String representing date and time to start + the downtime in RFC3339 format. String representing date and + time to start the downtime in RFC3339 format. + type: string + timezone: + description: (String) The timezone for the downtime. Follows IANA + timezone database identifiers. Defaults to "UTC". The timezone + for the downtime. Follows IANA timezone database identifiers. + Defaults to `"UTC"`. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.scope is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.scope) + || (has(self.initProvider) && has(self.initProvider.scope))' + status: + description: DowntimeStatus defines the observed state of Downtime. + properties: + atProvider: + properties: + active: + description: (Boolean) When true indicates this downtime is being + actively applied When true indicates this downtime is being + actively applied + type: boolean + activeChildId: + description: (Number) The id corresponding to the downtime object + definition of the active child for the original parent recurring + downtime. This field will only exist on recurring downtimes. + The id corresponding to the downtime object definition of the + active child for the original parent recurring downtime. This + field will only exist on recurring downtimes. + type: number + disabled: + description: (Boolean) When true indicates this downtime is not + being applied When true indicates this downtime is not being + applied + type: boolean + end: + description: (Number) Optionally specify an end date when this + downtime should expire. Accepts a Unix timestamp in UTC. Optionally + specify an end date when this downtime should expire. Accepts + a Unix timestamp in UTC. + type: number + endDate: + description: (String) String representing date and time to end + the downtime in RFC3339 format. String representing date and + time to end the downtime in RFC3339 format. + type: string + id: + description: (String) The ID of this resource. + type: string + message: + description: (String) An optional message to provide when creating + the downtime, can include notification handles An optional message + to provide when creating the downtime, can include notification + handles + type: string + monitorId: + description: (Number) When specified, this downtime will only + apply to this monitor When specified, this downtime will only + apply to this monitor + type: number + monitorTags: + description: (Set of String) A list of monitor tags (up to 32) + to base the scheduled downtime on. Only monitors that have all + selected tags are silenced A list of monitor tags (up to 32) + to base the scheduled downtime on. Only monitors that have all + selected tags are silenced + items: + type: string + type: array + x-kubernetes-list-type: set + muteFirstRecoveryNotification: + description: (Boolean) When true the first recovery notification + during the downtime will be muted Defaults to false. When true + the first recovery notification during the downtime will be + muted Defaults to `false`. + type: boolean + recurrence: + description: '(Block List, Max: 1) Optional recurring schedule + for this downtime (see below for nested schema) Optional recurring + schedule for this downtime' + items: + properties: + period: + description: (Number) How often to repeat as an integer. + For example to repeat every 3 days, select a type of days + and a period of 3. How often to repeat as an integer. + For example to repeat every 3 days, select a `type` of + `days` and a `period` of `3`. + type: number + rrule: + description: (String) The RRULE standard for defining recurring + events. For example, to have a recurring event on the + first day of each month, use FREQ=MONTHLY;INTERVAL=1. + Most common rrule options from the iCalendar Spec are + supported. Attributes specifying the duration in RRULE + are not supported (for example, DTSTART, DTEND, DURATION). + Only applicable when type is rrule. The RRULE standard + for defining recurring events. For example, to have a + recurring event on the first day of each month, use `FREQ=MONTHLY;INTERVAL=1`. + Most common rrule options from the iCalendar Spec are + supported. Attributes specifying the duration in RRULE + are not supported (for example, `DTSTART`, `DTEND`, `DURATION`). + Only applicable when `type` is `rrule`. + type: string + type: + description: (String) One of days, weeks, months, years, + or rrule. One of `days`, `weeks`, `months`, `years`, or + `rrule`. + type: string + untilDate: + description: (Number) The date at which the recurrence should + end as a POSIX timestamp. until_occurrences and until_date + are mutually exclusive. The date at which the recurrence + should end as a POSIX timestamp. `until_occurrences` and + `until_date` are mutually exclusive. + type: number + untilOccurrences: + description: (Number) How many times the downtime will be + rescheduled. until_occurrences and until_date are mutually + exclusive. How many times the downtime will be rescheduled. + `until_occurrences` and `until_date` are mutually exclusive. + type: number + weekDays: + description: '(List of String) A list of week days to repeat + on. Choose from: Mon, Tue, Wed, Thu, Fri, Sat or Sun. + Only applicable when type is weeks. First letter must + be capitalized. A list of week days to repeat on. Choose + from: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat` or `Sun`. + Only applicable when `type` is `weeks`. First letter must + be capitalized.' + items: + type: string + type: array + type: object + type: array + scope: + description: (List of String) specify the group scope to which + this downtime applies. For everything use '*' specify the group + scope to which this downtime applies. For everything use '*' + items: + type: string + type: array + start: + description: (Number) Specify when this downtime should start. + Accepts a Unix timestamp in UTC. Specify when this downtime + should start. Accepts a Unix timestamp in UTC. + type: number + startDate: + description: (String) String representing date and time to start + the downtime in RFC3339 format. String representing date and + time to start the downtime in RFC3339 format. + type: string + timezone: + description: (String) The timezone for the downtime. Follows IANA + timezone database identifiers. Defaults to "UTC". The timezone + for the downtime. Follows IANA timezone database identifiers. + Defaults to `"UTC"`. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_downtimeschedules.yaml b/package/crds/datadog.upbound.io_downtimeschedules.yaml new file mode 100644 index 0000000..e0e86ad --- /dev/null +++ b/package/crds/datadog.upbound.io_downtimeschedules.yaml @@ -0,0 +1,711 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: downtimeschedules.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DowntimeSchedule + listKind: DowntimeScheduleList + plural: downtimeschedules + singular: downtimeschedule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: DowntimeSchedule is the Schema for the DowntimeSchedules API. + Provides a Datadog DowntimeSchedule resource. This can be used to create + and manage Datadog downtimes. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DowntimeScheduleSpec defines the desired state of DowntimeSchedule + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + displayTimezone: + description: (String) The timezone in which to display the downtime's + start and end times in Datadog applications. This is not used + as an offset for scheduling. The timezone in which to display + the downtime's start and end times in Datadog applications. + This is not used as an offset for scheduling. + type: string + message: + description: (String) A message to include with notifications + for this downtime. Email notifications can be sent to specific + users by using the same @username notation as events. A message + to include with notifications for this downtime. Email notifications + can be sent to specific users by using the same `@username` + notation as events. + type: string + monitorIdentifier: + description: (Block, Optional) (see below for nested schema) + properties: + monitorId: + description: (Number) ID of the monitor to prevent notifications. + ID of the monitor to prevent notifications. + type: number + monitorTags: + description: (Set of String) A list of monitor tags. For example, + tags that are applied directly to monitors, not tags that + are used in monitor queries (which are filtered by the scope + parameter), to which the downtime applies. The resulting + downtime applies to monitors that match all provided monitor + tags. Setting monitor_tags to [*] configures the downtime + to mute all monitors for the given scope. A list of monitor + tags. For example, tags that are applied directly to monitors, + not tags that are used in monitor queries (which are filtered + by the scope parameter), to which the downtime applies. + The resulting downtime applies to monitors that match **all** + provided monitor tags. Setting `monitor_tags` to `[*]` configures + the downtime to mute all monitors for the given scope. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + muteFirstRecoveryNotification: + description: (Boolean) If the first recovery notification during + a downtime should be muted. If the first recovery notification + during a downtime should be muted. + type: boolean + notifyEndStates: + description: (Set of String) States that will trigger a monitor + notification when the notify_end_types action occurs. States + that will trigger a monitor notification when the `notify_end_types` + action occurs. + items: + type: string + type: array + x-kubernetes-list-type: set + notifyEndTypes: + description: (Set of String) Actions that will trigger a monitor + notification if the downtime is in the notify_end_types state. + Actions that will trigger a monitor notification if the downtime + is in the `notify_end_types` state. + items: + type: string + type: array + x-kubernetes-list-type: set + oneTimeSchedule: + description: (Block, Optional) (see below for nested schema) + properties: + end: + description: 8601 Datetime to end the downtime. Must include + a UTC offset of zero. If not provided, the downtime never + ends. ISO-8601 Datetime to end the downtime. Must include + a UTC offset of zero. If not provided, the downtime never + ends. + type: string + start: + description: 8601 Datetime to start the downtime. Must include + a UTC offset of zero. If not provided, the downtime starts + the moment it is created. ISO-8601 Datetime to start the + downtime. Must include a UTC offset of zero. If not provided, + the downtime starts the moment it is created. + type: string + type: object + recurringSchedule: + description: (Block, Optional) (see below for nested schema) + properties: + recurrence: + description: (Block List) (see below for nested schema) + items: + properties: + duration: + description: (String) The length of the downtime. Must + begin with an integer and end with one of 'm', 'h', + d', or 'w'. The length of the downtime. Must begin + with an integer and end with one of 'm', 'h', d', + or 'w'. + type: string + rrule: + description: '(String) The RRULE standard for defining + recurring events. For example, to have a recurring + event on the first day of each month, set the type + to rrule and set the FREQ to MONTHLY and BYMONTHDAY + to 1. Most common rrule options from the iCalendar + Spec are supported. Note: Attributes specifying the + duration in RRULE are not supported (for example, + DTSTART, DTEND, DURATION). More examples available + in this downtime guide. The `RRULE` standard for defining + recurring events. For example, to have a recurring + event on the first day of each month, set the type + to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` + to `1`. Most common `rrule` options from the [iCalendar + Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: + Attributes specifying the duration in `RRULE` are + not supported (for example, `DTSTART`, `DTEND`, `DURATION`). + More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).' + type: string + start: + description: 8601 Datetime to start the downtime. Must + include a UTC offset of zero. If not provided, the + downtime starts the moment it is created. ISO-8601 + Datetime to start the downtime. Must not include a + UTC offset. If not provided, the downtime starts the + moment it is created. + type: string + type: object + type: array + timezone: + description: (String) The timezone in which to schedule the + downtime. The timezone in which to schedule the downtime. + type: string + type: object + scope: + description: (String) The scope to which the downtime applies. + Must follow the common search syntax. The scope to which the + downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/). + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + displayTimezone: + description: (String) The timezone in which to display the downtime's + start and end times in Datadog applications. This is not used + as an offset for scheduling. The timezone in which to display + the downtime's start and end times in Datadog applications. + This is not used as an offset for scheduling. + type: string + message: + description: (String) A message to include with notifications + for this downtime. Email notifications can be sent to specific + users by using the same @username notation as events. A message + to include with notifications for this downtime. Email notifications + can be sent to specific users by using the same `@username` + notation as events. + type: string + monitorIdentifier: + description: (Block, Optional) (see below for nested schema) + properties: + monitorId: + description: (Number) ID of the monitor to prevent notifications. + ID of the monitor to prevent notifications. + type: number + monitorTags: + description: (Set of String) A list of monitor tags. For example, + tags that are applied directly to monitors, not tags that + are used in monitor queries (which are filtered by the scope + parameter), to which the downtime applies. The resulting + downtime applies to monitors that match all provided monitor + tags. Setting monitor_tags to [*] configures the downtime + to mute all monitors for the given scope. A list of monitor + tags. For example, tags that are applied directly to monitors, + not tags that are used in monitor queries (which are filtered + by the scope parameter), to which the downtime applies. + The resulting downtime applies to monitors that match **all** + provided monitor tags. Setting `monitor_tags` to `[*]` configures + the downtime to mute all monitors for the given scope. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + muteFirstRecoveryNotification: + description: (Boolean) If the first recovery notification during + a downtime should be muted. If the first recovery notification + during a downtime should be muted. + type: boolean + notifyEndStates: + description: (Set of String) States that will trigger a monitor + notification when the notify_end_types action occurs. States + that will trigger a monitor notification when the `notify_end_types` + action occurs. + items: + type: string + type: array + x-kubernetes-list-type: set + notifyEndTypes: + description: (Set of String) Actions that will trigger a monitor + notification if the downtime is in the notify_end_types state. + Actions that will trigger a monitor notification if the downtime + is in the `notify_end_types` state. + items: + type: string + type: array + x-kubernetes-list-type: set + oneTimeSchedule: + description: (Block, Optional) (see below for nested schema) + properties: + end: + description: 8601 Datetime to end the downtime. Must include + a UTC offset of zero. If not provided, the downtime never + ends. ISO-8601 Datetime to end the downtime. Must include + a UTC offset of zero. If not provided, the downtime never + ends. + type: string + start: + description: 8601 Datetime to start the downtime. Must include + a UTC offset of zero. If not provided, the downtime starts + the moment it is created. ISO-8601 Datetime to start the + downtime. Must include a UTC offset of zero. If not provided, + the downtime starts the moment it is created. + type: string + type: object + recurringSchedule: + description: (Block, Optional) (see below for nested schema) + properties: + recurrence: + description: (Block List) (see below for nested schema) + items: + properties: + duration: + description: (String) The length of the downtime. Must + begin with an integer and end with one of 'm', 'h', + d', or 'w'. The length of the downtime. Must begin + with an integer and end with one of 'm', 'h', d', + or 'w'. + type: string + rrule: + description: '(String) The RRULE standard for defining + recurring events. For example, to have a recurring + event on the first day of each month, set the type + to rrule and set the FREQ to MONTHLY and BYMONTHDAY + to 1. Most common rrule options from the iCalendar + Spec are supported. Note: Attributes specifying the + duration in RRULE are not supported (for example, + DTSTART, DTEND, DURATION). More examples available + in this downtime guide. The `RRULE` standard for defining + recurring events. For example, to have a recurring + event on the first day of each month, set the type + to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` + to `1`. Most common `rrule` options from the [iCalendar + Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: + Attributes specifying the duration in `RRULE` are + not supported (for example, `DTSTART`, `DTEND`, `DURATION`). + More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).' + type: string + start: + description: 8601 Datetime to start the downtime. Must + include a UTC offset of zero. If not provided, the + downtime starts the moment it is created. ISO-8601 + Datetime to start the downtime. Must not include a + UTC offset. If not provided, the downtime starts the + moment it is created. + type: string + type: object + type: array + timezone: + description: (String) The timezone in which to schedule the + downtime. The timezone in which to schedule the downtime. + type: string + type: object + scope: + description: (String) The scope to which the downtime applies. + Must follow the common search syntax. The scope to which the + downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/). + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.recurringSchedule is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.recurringSchedule) + || (has(self.initProvider) && has(self.initProvider.recurringSchedule))' + - message: spec.forProvider.scope is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.scope) + || (has(self.initProvider) && has(self.initProvider.scope))' + status: + description: DowntimeScheduleStatus defines the observed state of DowntimeSchedule. + properties: + atProvider: + properties: + displayTimezone: + description: (String) The timezone in which to display the downtime's + start and end times in Datadog applications. This is not used + as an offset for scheduling. The timezone in which to display + the downtime's start and end times in Datadog applications. + This is not used as an offset for scheduling. + type: string + id: + description: (String) The ID of this resource. + type: string + message: + description: (String) A message to include with notifications + for this downtime. Email notifications can be sent to specific + users by using the same @username notation as events. A message + to include with notifications for this downtime. Email notifications + can be sent to specific users by using the same `@username` + notation as events. + type: string + monitorIdentifier: + description: (Block, Optional) (see below for nested schema) + properties: + monitorId: + description: (Number) ID of the monitor to prevent notifications. + ID of the monitor to prevent notifications. + type: number + monitorTags: + description: (Set of String) A list of monitor tags. For example, + tags that are applied directly to monitors, not tags that + are used in monitor queries (which are filtered by the scope + parameter), to which the downtime applies. The resulting + downtime applies to monitors that match all provided monitor + tags. Setting monitor_tags to [*] configures the downtime + to mute all monitors for the given scope. A list of monitor + tags. For example, tags that are applied directly to monitors, + not tags that are used in monitor queries (which are filtered + by the scope parameter), to which the downtime applies. + The resulting downtime applies to monitors that match **all** + provided monitor tags. Setting `monitor_tags` to `[*]` configures + the downtime to mute all monitors for the given scope. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + muteFirstRecoveryNotification: + description: (Boolean) If the first recovery notification during + a downtime should be muted. If the first recovery notification + during a downtime should be muted. + type: boolean + notifyEndStates: + description: (Set of String) States that will trigger a monitor + notification when the notify_end_types action occurs. States + that will trigger a monitor notification when the `notify_end_types` + action occurs. + items: + type: string + type: array + x-kubernetes-list-type: set + notifyEndTypes: + description: (Set of String) Actions that will trigger a monitor + notification if the downtime is in the notify_end_types state. + Actions that will trigger a monitor notification if the downtime + is in the `notify_end_types` state. + items: + type: string + type: array + x-kubernetes-list-type: set + oneTimeSchedule: + description: (Block, Optional) (see below for nested schema) + properties: + end: + description: 8601 Datetime to end the downtime. Must include + a UTC offset of zero. If not provided, the downtime never + ends. ISO-8601 Datetime to end the downtime. Must include + a UTC offset of zero. If not provided, the downtime never + ends. + type: string + start: + description: 8601 Datetime to start the downtime. Must include + a UTC offset of zero. If not provided, the downtime starts + the moment it is created. ISO-8601 Datetime to start the + downtime. Must include a UTC offset of zero. If not provided, + the downtime starts the moment it is created. + type: string + type: object + recurringSchedule: + description: (Block, Optional) (see below for nested schema) + properties: + recurrence: + description: (Block List) (see below for nested schema) + items: + properties: + duration: + description: (String) The length of the downtime. Must + begin with an integer and end with one of 'm', 'h', + d', or 'w'. The length of the downtime. Must begin + with an integer and end with one of 'm', 'h', d', + or 'w'. + type: string + rrule: + description: '(String) The RRULE standard for defining + recurring events. For example, to have a recurring + event on the first day of each month, set the type + to rrule and set the FREQ to MONTHLY and BYMONTHDAY + to 1. Most common rrule options from the iCalendar + Spec are supported. Note: Attributes specifying the + duration in RRULE are not supported (for example, + DTSTART, DTEND, DURATION). More examples available + in this downtime guide. The `RRULE` standard for defining + recurring events. For example, to have a recurring + event on the first day of each month, set the type + to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` + to `1`. Most common `rrule` options from the [iCalendar + Spec](https://tools.ietf.org/html/rfc5545) are supported. **Note**: + Attributes specifying the duration in `RRULE` are + not supported (for example, `DTSTART`, `DTEND`, `DURATION`). + More examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).' + type: string + start: + description: 8601 Datetime to start the downtime. Must + include a UTC offset of zero. If not provided, the + downtime starts the moment it is created. ISO-8601 + Datetime to start the downtime. Must not include a + UTC offset. If not provided, the downtime starts the + moment it is created. + type: string + type: object + type: array + timezone: + description: (String) The timezone in which to schedule the + downtime. The timezone in which to schedule the downtime. + type: string + type: object + scope: + description: (String) The scope to which the downtime applies. + Must follow the common search syntax. The scope to which the + downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/). + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_ipallowlists.yaml b/package/crds/datadog.upbound.io_ipallowlists.yaml new file mode 100644 index 0000000..d304a32 --- /dev/null +++ b/package/crds/datadog.upbound.io_ipallowlists.yaml @@ -0,0 +1,347 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: ipallowlists.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: IPAllowList + listKind: IPAllowListList + plural: ipallowlists + singular: ipallowlist + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: IPAllowList is the Schema for the IPAllowLists API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IPAllowListSpec defines the desired state of IPAllowList + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + enabled: + description: Whether the IP Allowlist is enabled. + type: boolean + entry: + description: Set of objects containing an IP address or range + of IP addresses in the allowlist and an accompanying note. + items: + properties: + cidrBlock: + description: IP address or range of addresses. + type: string + note: + description: Note accompanying IP address. + type: string + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + enabled: + description: Whether the IP Allowlist is enabled. + type: boolean + entry: + description: Set of objects containing an IP address or range + of IP addresses in the allowlist and an accompanying note. + items: + properties: + cidrBlock: + description: IP address or range of addresses. + type: string + note: + description: Note accompanying IP address. + type: string + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.enabled is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.enabled) + || (has(self.initProvider) && has(self.initProvider.enabled))' + status: + description: IPAllowListStatus defines the observed state of IPAllowList. + properties: + atProvider: + properties: + enabled: + description: Whether the IP Allowlist is enabled. + type: boolean + entry: + description: Set of objects containing an IP address or range + of IP addresses in the allowlist and an accompanying note. + items: + properties: + cidrBlock: + description: IP address or range of addresses. + type: string + note: + description: Note accompanying IP address. + type: string + type: object + type: array + id: + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_monitorconfigpolicies.yaml b/package/crds/datadog.upbound.io_monitorconfigpolicies.yaml new file mode 100644 index 0000000..85128be --- /dev/null +++ b/package/crds/datadog.upbound.io_monitorconfigpolicies.yaml @@ -0,0 +1,380 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: monitorconfigpolicies.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: MonitorConfigPolicy + listKind: MonitorConfigPolicyList + plural: monitorconfigpolicies + singular: monitorconfigpolicy + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: MonitorConfigPolicy is the Schema for the MonitorConfigPolicys + API. Provides a Datadog monitor config policy resource. This can be used + to create and manage Datadog monitor config policies. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MonitorConfigPolicySpec defines the desired state of MonitorConfigPolicy + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + policyType: + description: (String) The monitor config policy type Valid values + are tag. The monitor config policy type Valid values are `tag`. + type: string + tagPolicy: + description: '(Block List, Max: 1) Config for a tag policy. Only + set if policy_type is tag. (see below for nested schema) Config + for a tag policy. Only set if `policy_type` is `tag`.' + items: + properties: + tagKey: + description: (String) The key of the tag The key of the + tag + type: string + tagKeyRequired: + description: (Boolean) If a tag key is required for monitor + creation If a tag key is required for monitor creation + type: boolean + validTagValues: + description: (List of String) Valid values for the tag Valid + values for the tag + items: + type: string + type: array + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + policyType: + description: (String) The monitor config policy type Valid values + are tag. The monitor config policy type Valid values are `tag`. + type: string + tagPolicy: + description: '(Block List, Max: 1) Config for a tag policy. Only + set if policy_type is tag. (see below for nested schema) Config + for a tag policy. Only set if `policy_type` is `tag`.' + items: + properties: + tagKey: + description: (String) The key of the tag The key of the + tag + type: string + tagKeyRequired: + description: (Boolean) If a tag key is required for monitor + creation If a tag key is required for monitor creation + type: boolean + validTagValues: + description: (List of String) Valid values for the tag Valid + values for the tag + items: + type: string + type: array + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.policyType is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.policyType) + || (has(self.initProvider) && has(self.initProvider.policyType))' + status: + description: MonitorConfigPolicyStatus defines the observed state of MonitorConfigPolicy. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + policyType: + description: (String) The monitor config policy type Valid values + are tag. The monitor config policy type Valid values are `tag`. + type: string + tagPolicy: + description: '(Block List, Max: 1) Config for a tag policy. Only + set if policy_type is tag. (see below for nested schema) Config + for a tag policy. Only set if `policy_type` is `tag`.' + items: + properties: + tagKey: + description: (String) The key of the tag The key of the + tag + type: string + tagKeyRequired: + description: (Boolean) If a tag key is required for monitor + creation If a tag key is required for monitor creation + type: boolean + validTagValues: + description: (List of String) Valid values for the tag Valid + values for the tag + items: + type: string + type: array + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_monitorjsons.yaml b/package/crds/datadog.upbound.io_monitorjsons.yaml new file mode 100644 index 0000000..78d287d --- /dev/null +++ b/package/crds/datadog.upbound.io_monitorjsons.yaml @@ -0,0 +1,323 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: monitorjsons.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: MonitorJSON + listKind: MonitorJSONList + plural: monitorjsons + singular: monitorjson + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: MonitorJSON is the Schema for the MonitorJSONs API. Provides + a Datadog monitor JSON resource. This can be used to create and manage Datadog + monitors using the JSON definition. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MonitorJSONSpec defines the desired state of MonitorJSON + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + monitor: + description: (String) The JSON formatted definition of the monitor. + The JSON formatted definition of the monitor. + type: string + url: + description: (String) The URL of the monitor. The URL of the monitor. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + monitor: + description: (String) The JSON formatted definition of the monitor. + The JSON formatted definition of the monitor. + type: string + url: + description: (String) The URL of the monitor. The URL of the monitor. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.monitor is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.monitor) + || (has(self.initProvider) && has(self.initProvider.monitor))' + status: + description: MonitorJSONStatus defines the observed state of MonitorJSON. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + monitor: + description: (String) The JSON formatted definition of the monitor. + The JSON formatted definition of the monitor. + type: string + url: + description: (String) The URL of the monitor. The URL of the monitor. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_monitors.yaml b/package/crds/datadog.upbound.io_monitors.yaml new file mode 100644 index 0000000..32147fd --- /dev/null +++ b/package/crds/datadog.upbound.io_monitors.yaml @@ -0,0 +1,1877 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: monitors.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Monitor + listKind: MonitorList + plural: monitors + singular: monitor + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Monitor is the Schema for the Monitors API. Provides a Datadog + monitor resource. This can be used to create and manage Datadog monitors. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MonitorSpec defines the desired state of Monitor + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + enableLogsSample: + description: (Boolean) A boolean indicating whether or not to + include a list of log values which triggered the alert. This + is only used by log monitors. Defaults to false. A boolean indicating + whether or not to include a list of log values which triggered + the alert. This is only used by log monitors. Defaults to `false`. + type: boolean + escalationMessage: + description: notification. Supports the @username notification + allowed elsewhere. A message to include with a re-notification. + Supports the `@username` notification allowed elsewhere. + type: string + evaluationDelay: + description: "negative integer. (Only applies to metric alert) + Time (in seconds) to delay evaluation, as a non-negative integer. + \n For example, if the value is set to `300` (5min), the `timeframe` + is set to `last_5m` and the time is 7:00, the monitor will evaluate + data from 6:50 to 6:55. This is useful for AWS CloudWatch and + other backfilled metrics to ensure the monitor will always have + data during evaluation." + type: number + forceDelete: + description: (Boolean) A boolean indicating whether this monitor + can be deleted even if it’s referenced by other resources (e.g. + SLO, composite monitor). A boolean indicating whether this monitor + can be deleted even if it’s referenced by other resources (e.g. + SLO, composite monitor). + type: boolean + groupRetentionDuration: + description: '(String) The time span after which groups with missing + data are dropped from the monitor state. The minimum value is + one hour, and the maximum value is 72 hours. Example values + are: 60m, 1h, and 2d. This option is only available for APM + Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, + and RUM monitors. The time span after which groups with missing + data are dropped from the monitor state. The minimum value is + one hour, and the maximum value is 72 hours. Example values + are: 60m, 1h, and 2d. This option is only available for APM + Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, + and RUM monitors.' + type: string + groupbySimpleMonitor: + description: (Boolean) Whether or not to trigger one alert if + any source breaches a threshold. This is only used by log monitors. + Defaults to false. Whether or not to trigger one alert if any + source breaches a threshold. This is only used by log monitors. + Defaults to `false`. + type: boolean + includeTags: + description: (Boolean) A boolean indicating whether notifications + from this monitor automatically insert its triggering tags into + the title. Defaults to true. A boolean indicating whether notifications + from this monitor automatically insert its triggering tags into + the title. Defaults to `true`. + type: boolean + locked: + description: (Boolean, Deprecated) A boolean indicating whether + changes to this monitor should be restricted to the creator + or admins. Defaults to false. Deprecated. Use restricted_roles. + A boolean indicating whether changes to this monitor should + be restricted to the creator or admins. Defaults to `false`. + **Deprecated.** Use `restricted_roles`. + type: boolean + message: + description: "(String) A message to include with notifications + for this monitor. A message to include with notifications for + this monitor. \n Email notifications can be sent to specific + users by using the same `@username` notation as events." + type: string + monitorThresholdWindows: + description: '(Block List, Max: 1) A mapping containing recovery_window + and trigger_window values, e.g. last_15m . Can only be used + for, and are required for, anomaly monitors. (see below for + nested schema) A mapping containing `recovery_window` and `trigger_window` + values, e.g. `last_15m` . Can only be used for, and are required + for, anomaly monitors.' + items: + properties: + recoveryWindow: + description: (String) Describes how long an anomalous metric + must be normal before the alert recovers. Describes how + long an anomalous metric must be normal before the alert + recovers. + type: string + triggerWindow: + description: (String) Describes how long a metric must be + anomalous before an alert triggers. Describes how long + a metric must be anomalous before an alert triggers. + type: string + type: object + type: array + monitorThresholds: + description: '(Block List, Max: 1) Alert thresholds of the monitor. + (see below for nested schema) Alert thresholds of the monitor.' + items: + properties: + critical: + description: (String) The monitor CRITICAL threshold. Must + be a number. The monitor `CRITICAL` threshold. Must be + a number. + type: string + criticalRecovery: + description: (String) The monitor CRITICAL recovery threshold. + Must be a number. The monitor `CRITICAL` recovery threshold. + Must be a number. + type: string + ok: + description: (String) The monitor OK threshold. Only supported + in monitor type service check. Must be a number. The monitor + `OK` threshold. Only supported in monitor type `service + check`. Must be a number. + type: string + unknown: + description: (String) The monitor UNKNOWN threshold. Only + supported in monitor type service check. Must be a number. + The monitor `UNKNOWN` threshold. Only supported in monitor + type `service check`. Must be a number. + type: string + warning: + description: (String) The monitor WARNING threshold. Must + be a number. The monitor `WARNING` threshold. Must be + a number. + type: string + warningRecovery: + description: (String) The monitor WARNING recovery threshold. + Must be a number. The monitor `WARNING` recovery threshold. + Must be a number. + type: string + type: object + type: array + name: + description: (String) Name of Datadog monitor. Name of Datadog + monitor. + type: string + newGroupDelay: + description: "(Number) The time (in seconds) to skip evaluations + for new groups. The time (in seconds) to skip evaluations for + new groups. \n `new_group_delay` overrides `new_host_delay` + if it is set to a nonzero value." + type: number + newHostDelay: + description: negative integer. This value is ignored for simple + monitors and monitors not grouped by host. The only case when + this should be used is to override the default and set new_host_delay + to zero for monitors grouped by host. Deprecated. Use new_group_delay + except when setting new_host_delay to zero. Defaults to 300. + **Deprecated**. See `new_group_delay`. Time (in seconds) to + allow a host to boot and applications to fully start before + starting the evaluation of monitor results. Should be a non-negative + integer. This value is ignored for simple monitors and monitors + not grouped by host. The only case when this should be used + is to override the default and set `new_host_delay` to zero + for monitors grouped by host. **Deprecated.** Use `new_group_delay` + except when setting `new_host_delay` to zero. Defaults to `300`. + type: number + noDataTimeframe: + description: "(Number) The number of minutes before a monitor + will notify when data stops reporting. The number of minutes + before a monitor will notify when data stops reporting. \n We + recommend at least 2x the monitor timeframe for metric alerts + or 2 minutes for service checks. Defaults to `10`." + type: number + notificationPresetName: + description: (String) Toggles the display of additional content + sent in the monitor notification. Valid values are show_all, + hide_query, hide_handles, hide_all. Toggles the display of additional + content sent in the monitor notification. Valid values are `show_all`, + `hide_query`, `hide_handles`, `hide_all`. + type: string + notifyAudit: + description: (Boolean) A boolean indicating whether tagged users + will be notified on changes to this monitor. Defaults to false. + A boolean indicating whether tagged users will be notified on + changes to this monitor. Defaults to `false`. + type: boolean + notifyBy: + description: alert. Controls what granularity a monitor alerts + on. Only available for monitors with groupings. For instance, + a monitor grouped by `cluster`, `namespace`, and `pod` can be + configured to only notify on each new `cluster` violating the + alert conditions by setting `notify_by` to `['cluster']`. Tags + mentioned in `notify_by` must be a subset of the grouping tags + in the query. For example, a query grouped by `cluster` and + `namespace` cannot notify on `region`. Setting `notify_by` to + `[*]` configures the monitor to notify as a simple-alert. + items: + type: string + type: array + x-kubernetes-list-type: set + notifyNoData: + description: (Boolean) A boolean indicating whether this monitor + will notify when data stops reporting. Defaults to false. A + boolean indicating whether this monitor will notify when data + stops reporting. Defaults to `false`. + type: boolean + onMissingData: + description: '(String) Controls how groups or monitors are treated + if an evaluation does not return any data points. The default + option results in different behavior depending on the monitor + query type. For monitors using Count queries, an empty monitor + evaluation is treated as 0 and is compared to the threshold + conditions. For monitors using any query type other than Count, + for example Gauge, Measure, or Rate, the monitor shows the last + known status. This option is only available for APM Trace Analytics, + Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + Valid values are: show_no_data, show_and_notify_no_data, resolve, + and default. Controls how groups or monitors are treated if + an evaluation does not return any data points. The default option + results in different behavior depending on the monitor query + type. For monitors using `Count` queries, an empty monitor evaluation + is treated as 0 and is compared to the threshold conditions. + For monitors using any query type other than `Count`, for example + `Gauge`, `Measure`, or `Rate`, the monitor shows the last known + status. This option is only available for APM Trace Analytics, + Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + Valid values are: `show_no_data`, `show_and_notify_no_data`, + `resolve`, and `default`.' + type: string + priority: + description: (Number) Integer from 1 (high) to 5 (low) indicating + alert severity. Integer from 1 (high) to 5 (low) indicating + alert severity. + type: number + query: + description: "(String) The monitor query to notify on. Note this + is not the same query you see in the UI and the syntax is different + depending on the monitor type, please see the API Reference + for details. The monitor query to notify on. Note this is not + the same query you see in the UI and the syntax is different + depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) + for details. \n **Note:** APM latency data is now available + as Distribution Metrics. We strongly recommend updating monitor + definitions to query the new metrics.datadoghq.com/tracing/guide/ddsketch_trace_metrics/)." + type: string + renotifyInterval: + description: notify on the current status. It will only re-notify + if it's not resolved. The number of minutes after the last notification + before a monitor will re-notify on the current status. It will + only re-notify if it's not resolved. + type: number + renotifyOccurrences: + description: notification messages that should be sent on the + current status. The number of re-notification messages that + should be sent on the current status. + type: number + renotifyStatuses: + description: notification messages should be sent. Valid values + are alert, warn, no data. The types of statuses for which re-notification + messages should be sent. Valid values are `alert`, `warn`, `no + data`. + items: + type: string + type: array + x-kubernetes-list-type: set + requireFullWindow: + description: (Boolean) A boolean indicating whether this monitor + needs a full window of data before it's evaluated. Datadog strongly + recommends you set this to false for sparse metrics, otherwise + some evaluations may be skipped. If there's a custom_schedule + set, require_full_window must be false and will be ignored. + Defaults to true. A boolean indicating whether this monitor + needs a full window of data before it's evaluated. Datadog strongly + recommends you set this to `false` for sparse metrics, otherwise + some evaluations may be skipped. If there's a custom_schedule + set, `require_full_window` must be false and will be ignored. + Defaults to `true`. + type: boolean + restrictedRoles: + description: (Set of String) A list of unique role identifiers + to define which roles are allowed to edit the monitor. Editing + a monitor includes any updates to the monitor configuration, + monitor deletion, and muting of the monitor for any amount of + time. Roles unique identifiers can be pulled from the Roles + API in the data.id field. A list of unique role identifiers + to define which roles are allowed to edit the monitor. Editing + a monitor includes any updates to the monitor configuration, + monitor deletion, and muting of the monitor for any amount of + time. Roles unique identifiers can be pulled from the [Roles + API](https://docs.datadoghq.com/api/latest/roles/#list-roles) + in the `data.id` field. + items: + type: string + type: array + x-kubernetes-list-type: set + schedulingOptions: + description: (Block List) Configuration options for scheduling. + (see below for nested schema) Configuration options for scheduling. + items: + properties: + customSchedule: + description: (Block List) Configuration options for the + custom schedules. If start is omitted, the monitor creation + time will be used. (see below for nested schema) Configuration + options for the custom schedules. If `start` is omitted, + the monitor creation time will be used. + items: + properties: + recurrence: + description: '(Block List, Min: 1, Max: 1) A list + of recurrence definitions. Length must be 1. (see + below for nested schema) A list of recurrence definitions. + Length must be 1.' + items: + properties: + rrule: + description: (String) Must be a valid rrule. + See API docs for supported fields Must be + a valid `rrule`. See API docs for supported + fields + type: string + start: + description: MM-DDThh:mm:ss' Time to start recurrence + cycle. Similar to DTSTART. Expected format + 'YYYY-MM-DDThh:mm:ss' + type: string + timezone: + description: '(String) ''tz database'' format. + Example: America/New_York or UTC ''tz database'' + format. Example: `America/New_York` or `UTC`' + type: string + type: object + type: array + type: object + type: array + evaluationWindow: + description: (Block List) Configuration options for the + evaluation window. If hour_starts is set, no other fields + may be set. Otherwise, day_starts and month_starts must + be set together. (see below for nested schema) Configuration + options for the evaluation window. If `hour_starts` is + set, no other fields may be set. Otherwise, `day_starts` + and `month_starts` must be set together. + items: + properties: + dayStarts: + description: (String) The time of the day at which + a one day cumulative evaluation window starts. Must + be defined in UTC time in HH:mm format. The time + of the day at which a one day cumulative evaluation + window starts. Must be defined in UTC time in `HH:mm` + format. + type: string + hourStarts: + description: (Number) The minute of the hour at which + a one hour cumulative evaluation window starts. + Must be between 0 and 59. The minute of the hour + at which a one hour cumulative evaluation window + starts. Must be between 0 and 59. + type: number + monthStarts: + description: (Number) The day of the month at which + a one month cumulative evaluation window starts. + Must be a value of 1. The day of the month at which + a one month cumulative evaluation window starts. + Must be a value of 1. + type: number + type: object + type: array + type: object + type: array + tags: + description: '(Set of String) A list of tags to associate with + your monitor. This can help you categorize and filter monitors + in the manage monitors page of the UI. Note: it''s not currently + possible to filter by these tags when querying via the API A + list of tags to associate with your monitor. This can help you + categorize and filter monitors in the manage monitors page of + the UI. Note: it''s not currently possible to filter by these + tags when querying via the API' + items: + type: string + type: array + x-kubernetes-list-type: set + timeoutH: + description: (Number) The number of hours of the monitor not reporting + data before it automatically resolves from a triggered state. + The minimum allowed value is 0 hours. The maximum allowed value + is 24 hours. The number of hours of the monitor not reporting + data before it automatically resolves from a triggered state. + The minimum allowed value is 0 hours. The maximum allowed value + is 24 hours. + type: number + type: + description: 'analytics alert, slo alert, event-v2 alert, audit + alert, ci-pipelines alert, ci-tests alert, error-tracking alert, + database-monitoring alert. The type of the monitor. The mapping + from these types to the types found in the Datadog Web UI can + be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). + Note: The monitor type cannot be changed after a monitor is + created. Valid values are `composite`, `event alert`, `log alert`, + `metric alert`, `process alert`, `query alert`, `rum alert`, + `service check`, `synthetics alert`, `trace-analytics alert`, + `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines + alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring + alert`.' + type: string + validate: + description: (Boolean) If set to false, skip the validation call + done during plan. If set to `false`, skip the validation call + done during plan. + type: boolean + variables: + description: '(Block List, Max: 1) (see below for nested schema)' + items: + properties: + eventQuery: + description: (Block List) A timeseries formula and functions + events query. (see below for nested schema) A timeseries + formula and functions events query. + items: + properties: + compute: + description: '(Block List, Min: 1) The compute options. + (see below for nested schema) The compute options.' + items: + properties: + aggregation: + description: (String) The aggregation methods + for event platform queries. Valid values are + count, cardinality, median, pc75, pc90, pc95, + pc98, pc99, sum, min, max, avg. The aggregation + methods for event platform queries. Valid + values are `count`, `cardinality`, `median`, + `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, + `min`, `max`, `avg`. + type: string + interval: + description: (Number) A time interval in milliseconds. + A time interval in milliseconds. + type: number + metric: + description: (String) The measurable attribute + to compute. The measurable attribute to compute. + type: string + type: object + type: array + dataSource: + description: based queries. Valid values are rum, + ci_pipelines, ci_tests, audit, events, logs, spans, + database_queries. The data source for event platform-based + queries. Valid values are `rum`, `ci_pipelines`, + `ci_tests`, `audit`, `events`, `logs`, `spans`, + `database_queries`. + type: string + groupBy: + description: (Block List) Group by options. (see below + for nested schema) Group by options. + items: + properties: + facet: + description: (String) The event facet. The event + facet. + type: string + limit: + description: (Number) The number of groups to + return. The number of groups to return. + type: number + sort: + description: '(Block List, Max: 1) The options + for sorting group by results. (see below for + nested schema) The options for sorting group + by results.' + items: + properties: + aggregation: + description: (String) The aggregation + methods for event platform queries. + Valid values are count, cardinality, + median, pc75, pc90, pc95, pc98, pc99, + sum, min, max, avg. The aggregation + methods for the event platform queries. + Valid values are `count`, `cardinality`, + `median`, `pc75`, `pc90`, `pc95`, `pc98`, + `pc99`, `sum`, `min`, `max`, `avg`. + type: string + metric: + description: (String) The measurable attribute + to compute. The metric used for sorting + group by results. + type: string + order: + description: (String) Direction of sort. + Valid values are asc, desc. Direction + of sort. Valid values are `asc`, `desc`. + type: string + type: object + type: array + type: object + type: array + indexes: + description: (List of String) An array of index names + to query in the stream. An array of index names + to query in the stream. + items: + type: string + type: array + name: + description: (String) Name of Datadog monitor. The + name of query for use in formulas. + type: string + search: + description: '(Block List, Min: 1, Max: 1) The search + options. (see below for nested schema) The search + options.' + items: + properties: + query: + description: (String) The monitor query to notify + on. Note this is not the same query you see + in the UI and the syntax is different depending + on the monitor type, please see the API Reference + for details. The events search string. + type: string + type: object + type: array + type: object + type: array + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + enableLogsSample: + description: (Boolean) A boolean indicating whether or not to + include a list of log values which triggered the alert. This + is only used by log monitors. Defaults to false. A boolean indicating + whether or not to include a list of log values which triggered + the alert. This is only used by log monitors. Defaults to `false`. + type: boolean + escalationMessage: + description: notification. Supports the @username notification + allowed elsewhere. A message to include with a re-notification. + Supports the `@username` notification allowed elsewhere. + type: string + evaluationDelay: + description: "negative integer. (Only applies to metric alert) + Time (in seconds) to delay evaluation, as a non-negative integer. + \n For example, if the value is set to `300` (5min), the `timeframe` + is set to `last_5m` and the time is 7:00, the monitor will evaluate + data from 6:50 to 6:55. This is useful for AWS CloudWatch and + other backfilled metrics to ensure the monitor will always have + data during evaluation." + type: number + forceDelete: + description: (Boolean) A boolean indicating whether this monitor + can be deleted even if it’s referenced by other resources (e.g. + SLO, composite monitor). A boolean indicating whether this monitor + can be deleted even if it’s referenced by other resources (e.g. + SLO, composite monitor). + type: boolean + groupRetentionDuration: + description: '(String) The time span after which groups with missing + data are dropped from the monitor state. The minimum value is + one hour, and the maximum value is 72 hours. Example values + are: 60m, 1h, and 2d. This option is only available for APM + Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, + and RUM monitors. The time span after which groups with missing + data are dropped from the monitor state. The minimum value is + one hour, and the maximum value is 72 hours. Example values + are: 60m, 1h, and 2d. This option is only available for APM + Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, + and RUM monitors.' + type: string + groupbySimpleMonitor: + description: (Boolean) Whether or not to trigger one alert if + any source breaches a threshold. This is only used by log monitors. + Defaults to false. Whether or not to trigger one alert if any + source breaches a threshold. This is only used by log monitors. + Defaults to `false`. + type: boolean + includeTags: + description: (Boolean) A boolean indicating whether notifications + from this monitor automatically insert its triggering tags into + the title. Defaults to true. A boolean indicating whether notifications + from this monitor automatically insert its triggering tags into + the title. Defaults to `true`. + type: boolean + locked: + description: (Boolean, Deprecated) A boolean indicating whether + changes to this monitor should be restricted to the creator + or admins. Defaults to false. Deprecated. Use restricted_roles. + A boolean indicating whether changes to this monitor should + be restricted to the creator or admins. Defaults to `false`. + **Deprecated.** Use `restricted_roles`. + type: boolean + message: + description: "(String) A message to include with notifications + for this monitor. A message to include with notifications for + this monitor. \n Email notifications can be sent to specific + users by using the same `@username` notation as events." + type: string + monitorThresholdWindows: + description: '(Block List, Max: 1) A mapping containing recovery_window + and trigger_window values, e.g. last_15m . Can only be used + for, and are required for, anomaly monitors. (see below for + nested schema) A mapping containing `recovery_window` and `trigger_window` + values, e.g. `last_15m` . Can only be used for, and are required + for, anomaly monitors.' + items: + properties: + recoveryWindow: + description: (String) Describes how long an anomalous metric + must be normal before the alert recovers. Describes how + long an anomalous metric must be normal before the alert + recovers. + type: string + triggerWindow: + description: (String) Describes how long a metric must be + anomalous before an alert triggers. Describes how long + a metric must be anomalous before an alert triggers. + type: string + type: object + type: array + monitorThresholds: + description: '(Block List, Max: 1) Alert thresholds of the monitor. + (see below for nested schema) Alert thresholds of the monitor.' + items: + properties: + critical: + description: (String) The monitor CRITICAL threshold. Must + be a number. The monitor `CRITICAL` threshold. Must be + a number. + type: string + criticalRecovery: + description: (String) The monitor CRITICAL recovery threshold. + Must be a number. The monitor `CRITICAL` recovery threshold. + Must be a number. + type: string + ok: + description: (String) The monitor OK threshold. Only supported + in monitor type service check. Must be a number. The monitor + `OK` threshold. Only supported in monitor type `service + check`. Must be a number. + type: string + unknown: + description: (String) The monitor UNKNOWN threshold. Only + supported in monitor type service check. Must be a number. + The monitor `UNKNOWN` threshold. Only supported in monitor + type `service check`. Must be a number. + type: string + warning: + description: (String) The monitor WARNING threshold. Must + be a number. The monitor `WARNING` threshold. Must be + a number. + type: string + warningRecovery: + description: (String) The monitor WARNING recovery threshold. + Must be a number. The monitor `WARNING` recovery threshold. + Must be a number. + type: string + type: object + type: array + name: + description: (String) Name of Datadog monitor. Name of Datadog + monitor. + type: string + newGroupDelay: + description: "(Number) The time (in seconds) to skip evaluations + for new groups. The time (in seconds) to skip evaluations for + new groups. \n `new_group_delay` overrides `new_host_delay` + if it is set to a nonzero value." + type: number + newHostDelay: + description: negative integer. This value is ignored for simple + monitors and monitors not grouped by host. The only case when + this should be used is to override the default and set new_host_delay + to zero for monitors grouped by host. Deprecated. Use new_group_delay + except when setting new_host_delay to zero. Defaults to 300. + **Deprecated**. See `new_group_delay`. Time (in seconds) to + allow a host to boot and applications to fully start before + starting the evaluation of monitor results. Should be a non-negative + integer. This value is ignored for simple monitors and monitors + not grouped by host. The only case when this should be used + is to override the default and set `new_host_delay` to zero + for monitors grouped by host. **Deprecated.** Use `new_group_delay` + except when setting `new_host_delay` to zero. Defaults to `300`. + type: number + noDataTimeframe: + description: "(Number) The number of minutes before a monitor + will notify when data stops reporting. The number of minutes + before a monitor will notify when data stops reporting. \n We + recommend at least 2x the monitor timeframe for metric alerts + or 2 minutes for service checks. Defaults to `10`." + type: number + notificationPresetName: + description: (String) Toggles the display of additional content + sent in the monitor notification. Valid values are show_all, + hide_query, hide_handles, hide_all. Toggles the display of additional + content sent in the monitor notification. Valid values are `show_all`, + `hide_query`, `hide_handles`, `hide_all`. + type: string + notifyAudit: + description: (Boolean) A boolean indicating whether tagged users + will be notified on changes to this monitor. Defaults to false. + A boolean indicating whether tagged users will be notified on + changes to this monitor. Defaults to `false`. + type: boolean + notifyBy: + description: alert. Controls what granularity a monitor alerts + on. Only available for monitors with groupings. For instance, + a monitor grouped by `cluster`, `namespace`, and `pod` can be + configured to only notify on each new `cluster` violating the + alert conditions by setting `notify_by` to `['cluster']`. Tags + mentioned in `notify_by` must be a subset of the grouping tags + in the query. For example, a query grouped by `cluster` and + `namespace` cannot notify on `region`. Setting `notify_by` to + `[*]` configures the monitor to notify as a simple-alert. + items: + type: string + type: array + x-kubernetes-list-type: set + notifyNoData: + description: (Boolean) A boolean indicating whether this monitor + will notify when data stops reporting. Defaults to false. A + boolean indicating whether this monitor will notify when data + stops reporting. Defaults to `false`. + type: boolean + onMissingData: + description: '(String) Controls how groups or monitors are treated + if an evaluation does not return any data points. The default + option results in different behavior depending on the monitor + query type. For monitors using Count queries, an empty monitor + evaluation is treated as 0 and is compared to the threshold + conditions. For monitors using any query type other than Count, + for example Gauge, Measure, or Rate, the monitor shows the last + known status. This option is only available for APM Trace Analytics, + Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + Valid values are: show_no_data, show_and_notify_no_data, resolve, + and default. Controls how groups or monitors are treated if + an evaluation does not return any data points. The default option + results in different behavior depending on the monitor query + type. For monitors using `Count` queries, an empty monitor evaluation + is treated as 0 and is compared to the threshold conditions. + For monitors using any query type other than `Count`, for example + `Gauge`, `Measure`, or `Rate`, the monitor shows the last known + status. This option is only available for APM Trace Analytics, + Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + Valid values are: `show_no_data`, `show_and_notify_no_data`, + `resolve`, and `default`.' + type: string + priority: + description: (Number) Integer from 1 (high) to 5 (low) indicating + alert severity. Integer from 1 (high) to 5 (low) indicating + alert severity. + type: number + query: + description: "(String) The monitor query to notify on. Note this + is not the same query you see in the UI and the syntax is different + depending on the monitor type, please see the API Reference + for details. The monitor query to notify on. Note this is not + the same query you see in the UI and the syntax is different + depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) + for details. \n **Note:** APM latency data is now available + as Distribution Metrics. We strongly recommend updating monitor + definitions to query the new metrics.datadoghq.com/tracing/guide/ddsketch_trace_metrics/)." + type: string + renotifyInterval: + description: notify on the current status. It will only re-notify + if it's not resolved. The number of minutes after the last notification + before a monitor will re-notify on the current status. It will + only re-notify if it's not resolved. + type: number + renotifyOccurrences: + description: notification messages that should be sent on the + current status. The number of re-notification messages that + should be sent on the current status. + type: number + renotifyStatuses: + description: notification messages should be sent. Valid values + are alert, warn, no data. The types of statuses for which re-notification + messages should be sent. Valid values are `alert`, `warn`, `no + data`. + items: + type: string + type: array + x-kubernetes-list-type: set + requireFullWindow: + description: (Boolean) A boolean indicating whether this monitor + needs a full window of data before it's evaluated. Datadog strongly + recommends you set this to false for sparse metrics, otherwise + some evaluations may be skipped. If there's a custom_schedule + set, require_full_window must be false and will be ignored. + Defaults to true. A boolean indicating whether this monitor + needs a full window of data before it's evaluated. Datadog strongly + recommends you set this to `false` for sparse metrics, otherwise + some evaluations may be skipped. If there's a custom_schedule + set, `require_full_window` must be false and will be ignored. + Defaults to `true`. + type: boolean + restrictedRoles: + description: (Set of String) A list of unique role identifiers + to define which roles are allowed to edit the monitor. Editing + a monitor includes any updates to the monitor configuration, + monitor deletion, and muting of the monitor for any amount of + time. Roles unique identifiers can be pulled from the Roles + API in the data.id field. A list of unique role identifiers + to define which roles are allowed to edit the monitor. Editing + a monitor includes any updates to the monitor configuration, + monitor deletion, and muting of the monitor for any amount of + time. Roles unique identifiers can be pulled from the [Roles + API](https://docs.datadoghq.com/api/latest/roles/#list-roles) + in the `data.id` field. + items: + type: string + type: array + x-kubernetes-list-type: set + schedulingOptions: + description: (Block List) Configuration options for scheduling. + (see below for nested schema) Configuration options for scheduling. + items: + properties: + customSchedule: + description: (Block List) Configuration options for the + custom schedules. If start is omitted, the monitor creation + time will be used. (see below for nested schema) Configuration + options for the custom schedules. If `start` is omitted, + the monitor creation time will be used. + items: + properties: + recurrence: + description: '(Block List, Min: 1, Max: 1) A list + of recurrence definitions. Length must be 1. (see + below for nested schema) A list of recurrence definitions. + Length must be 1.' + items: + properties: + rrule: + description: (String) Must be a valid rrule. + See API docs for supported fields Must be + a valid `rrule`. See API docs for supported + fields + type: string + start: + description: MM-DDThh:mm:ss' Time to start recurrence + cycle. Similar to DTSTART. Expected format + 'YYYY-MM-DDThh:mm:ss' + type: string + timezone: + description: '(String) ''tz database'' format. + Example: America/New_York or UTC ''tz database'' + format. Example: `America/New_York` or `UTC`' + type: string + type: object + type: array + type: object + type: array + evaluationWindow: + description: (Block List) Configuration options for the + evaluation window. If hour_starts is set, no other fields + may be set. Otherwise, day_starts and month_starts must + be set together. (see below for nested schema) Configuration + options for the evaluation window. If `hour_starts` is + set, no other fields may be set. Otherwise, `day_starts` + and `month_starts` must be set together. + items: + properties: + dayStarts: + description: (String) The time of the day at which + a one day cumulative evaluation window starts. Must + be defined in UTC time in HH:mm format. The time + of the day at which a one day cumulative evaluation + window starts. Must be defined in UTC time in `HH:mm` + format. + type: string + hourStarts: + description: (Number) The minute of the hour at which + a one hour cumulative evaluation window starts. + Must be between 0 and 59. The minute of the hour + at which a one hour cumulative evaluation window + starts. Must be between 0 and 59. + type: number + monthStarts: + description: (Number) The day of the month at which + a one month cumulative evaluation window starts. + Must be a value of 1. The day of the month at which + a one month cumulative evaluation window starts. + Must be a value of 1. + type: number + type: object + type: array + type: object + type: array + tags: + description: '(Set of String) A list of tags to associate with + your monitor. This can help you categorize and filter monitors + in the manage monitors page of the UI. Note: it''s not currently + possible to filter by these tags when querying via the API A + list of tags to associate with your monitor. This can help you + categorize and filter monitors in the manage monitors page of + the UI. Note: it''s not currently possible to filter by these + tags when querying via the API' + items: + type: string + type: array + x-kubernetes-list-type: set + timeoutH: + description: (Number) The number of hours of the monitor not reporting + data before it automatically resolves from a triggered state. + The minimum allowed value is 0 hours. The maximum allowed value + is 24 hours. The number of hours of the monitor not reporting + data before it automatically resolves from a triggered state. + The minimum allowed value is 0 hours. The maximum allowed value + is 24 hours. + type: number + type: + description: 'analytics alert, slo alert, event-v2 alert, audit + alert, ci-pipelines alert, ci-tests alert, error-tracking alert, + database-monitoring alert. The type of the monitor. The mapping + from these types to the types found in the Datadog Web UI can + be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). + Note: The monitor type cannot be changed after a monitor is + created. Valid values are `composite`, `event alert`, `log alert`, + `metric alert`, `process alert`, `query alert`, `rum alert`, + `service check`, `synthetics alert`, `trace-analytics alert`, + `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines + alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring + alert`.' + type: string + validate: + description: (Boolean) If set to false, skip the validation call + done during plan. If set to `false`, skip the validation call + done during plan. + type: boolean + variables: + description: '(Block List, Max: 1) (see below for nested schema)' + items: + properties: + eventQuery: + description: (Block List) A timeseries formula and functions + events query. (see below for nested schema) A timeseries + formula and functions events query. + items: + properties: + compute: + description: '(Block List, Min: 1) The compute options. + (see below for nested schema) The compute options.' + items: + properties: + aggregation: + description: (String) The aggregation methods + for event platform queries. Valid values are + count, cardinality, median, pc75, pc90, pc95, + pc98, pc99, sum, min, max, avg. The aggregation + methods for event platform queries. Valid + values are `count`, `cardinality`, `median`, + `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, + `min`, `max`, `avg`. + type: string + interval: + description: (Number) A time interval in milliseconds. + A time interval in milliseconds. + type: number + metric: + description: (String) The measurable attribute + to compute. The measurable attribute to compute. + type: string + type: object + type: array + dataSource: + description: based queries. Valid values are rum, + ci_pipelines, ci_tests, audit, events, logs, spans, + database_queries. The data source for event platform-based + queries. Valid values are `rum`, `ci_pipelines`, + `ci_tests`, `audit`, `events`, `logs`, `spans`, + `database_queries`. + type: string + groupBy: + description: (Block List) Group by options. (see below + for nested schema) Group by options. + items: + properties: + facet: + description: (String) The event facet. The event + facet. + type: string + limit: + description: (Number) The number of groups to + return. The number of groups to return. + type: number + sort: + description: '(Block List, Max: 1) The options + for sorting group by results. (see below for + nested schema) The options for sorting group + by results.' + items: + properties: + aggregation: + description: (String) The aggregation + methods for event platform queries. + Valid values are count, cardinality, + median, pc75, pc90, pc95, pc98, pc99, + sum, min, max, avg. The aggregation + methods for the event platform queries. + Valid values are `count`, `cardinality`, + `median`, `pc75`, `pc90`, `pc95`, `pc98`, + `pc99`, `sum`, `min`, `max`, `avg`. + type: string + metric: + description: (String) The measurable attribute + to compute. The metric used for sorting + group by results. + type: string + order: + description: (String) Direction of sort. + Valid values are asc, desc. Direction + of sort. Valid values are `asc`, `desc`. + type: string + type: object + type: array + type: object + type: array + indexes: + description: (List of String) An array of index names + to query in the stream. An array of index names + to query in the stream. + items: + type: string + type: array + name: + description: (String) Name of Datadog monitor. The + name of query for use in formulas. + type: string + search: + description: '(Block List, Min: 1, Max: 1) The search + options. (see below for nested schema) The search + options.' + items: + properties: + query: + description: (String) The monitor query to notify + on. Note this is not the same query you see + in the UI and the syntax is different depending + on the monitor type, please see the API Reference + for details. The events search string. + type: string + type: object + type: array + type: object + type: array + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.message is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.message) + || (has(self.initProvider) && has(self.initProvider.message))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.query is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.query) + || (has(self.initProvider) && has(self.initProvider.query))' + - message: spec.forProvider.type is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.type) + || (has(self.initProvider) && has(self.initProvider.type))' + status: + description: MonitorStatus defines the observed state of Monitor. + properties: + atProvider: + properties: + enableLogsSample: + description: (Boolean) A boolean indicating whether or not to + include a list of log values which triggered the alert. This + is only used by log monitors. Defaults to false. A boolean indicating + whether or not to include a list of log values which triggered + the alert. This is only used by log monitors. Defaults to `false`. + type: boolean + enableSamples: + description: (Boolean) Whether or not a list of samples which + triggered the alert is included. This is only used by CI Test + and Pipeline monitors. Whether or not a list of samples which + triggered the alert is included. This is only used by CI Test + and Pipeline monitors. + type: boolean + escalationMessage: + description: notification. Supports the @username notification + allowed elsewhere. A message to include with a re-notification. + Supports the `@username` notification allowed elsewhere. + type: string + evaluationDelay: + description: "negative integer. (Only applies to metric alert) + Time (in seconds) to delay evaluation, as a non-negative integer. + \n For example, if the value is set to `300` (5min), the `timeframe` + is set to `last_5m` and the time is 7:00, the monitor will evaluate + data from 6:50 to 6:55. This is useful for AWS CloudWatch and + other backfilled metrics to ensure the monitor will always have + data during evaluation." + type: number + forceDelete: + description: (Boolean) A boolean indicating whether this monitor + can be deleted even if it’s referenced by other resources (e.g. + SLO, composite monitor). A boolean indicating whether this monitor + can be deleted even if it’s referenced by other resources (e.g. + SLO, composite monitor). + type: boolean + groupRetentionDuration: + description: '(String) The time span after which groups with missing + data are dropped from the monitor state. The minimum value is + one hour, and the maximum value is 72 hours. Example values + are: 60m, 1h, and 2d. This option is only available for APM + Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, + and RUM monitors. The time span after which groups with missing + data are dropped from the monitor state. The minimum value is + one hour, and the maximum value is 72 hours. Example values + are: 60m, 1h, and 2d. This option is only available for APM + Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, + and RUM monitors.' + type: string + groupbySimpleMonitor: + description: (Boolean) Whether or not to trigger one alert if + any source breaches a threshold. This is only used by log monitors. + Defaults to false. Whether or not to trigger one alert if any + source breaches a threshold. This is only used by log monitors. + Defaults to `false`. + type: boolean + id: + description: (String) The ID of this resource. + type: string + includeTags: + description: (Boolean) A boolean indicating whether notifications + from this monitor automatically insert its triggering tags into + the title. Defaults to true. A boolean indicating whether notifications + from this monitor automatically insert its triggering tags into + the title. Defaults to `true`. + type: boolean + locked: + description: (Boolean, Deprecated) A boolean indicating whether + changes to this monitor should be restricted to the creator + or admins. Defaults to false. Deprecated. Use restricted_roles. + A boolean indicating whether changes to this monitor should + be restricted to the creator or admins. Defaults to `false`. + **Deprecated.** Use `restricted_roles`. + type: boolean + message: + description: "(String) A message to include with notifications + for this monitor. A message to include with notifications for + this monitor. \n Email notifications can be sent to specific + users by using the same `@username` notation as events." + type: string + monitorThresholdWindows: + description: '(Block List, Max: 1) A mapping containing recovery_window + and trigger_window values, e.g. last_15m . Can only be used + for, and are required for, anomaly monitors. (see below for + nested schema) A mapping containing `recovery_window` and `trigger_window` + values, e.g. `last_15m` . Can only be used for, and are required + for, anomaly monitors.' + items: + properties: + recoveryWindow: + description: (String) Describes how long an anomalous metric + must be normal before the alert recovers. Describes how + long an anomalous metric must be normal before the alert + recovers. + type: string + triggerWindow: + description: (String) Describes how long a metric must be + anomalous before an alert triggers. Describes how long + a metric must be anomalous before an alert triggers. + type: string + type: object + type: array + monitorThresholds: + description: '(Block List, Max: 1) Alert thresholds of the monitor. + (see below for nested schema) Alert thresholds of the monitor.' + items: + properties: + critical: + description: (String) The monitor CRITICAL threshold. Must + be a number. The monitor `CRITICAL` threshold. Must be + a number. + type: string + criticalRecovery: + description: (String) The monitor CRITICAL recovery threshold. + Must be a number. The monitor `CRITICAL` recovery threshold. + Must be a number. + type: string + ok: + description: (String) The monitor OK threshold. Only supported + in monitor type service check. Must be a number. The monitor + `OK` threshold. Only supported in monitor type `service + check`. Must be a number. + type: string + unknown: + description: (String) The monitor UNKNOWN threshold. Only + supported in monitor type service check. Must be a number. + The monitor `UNKNOWN` threshold. Only supported in monitor + type `service check`. Must be a number. + type: string + warning: + description: (String) The monitor WARNING threshold. Must + be a number. The monitor `WARNING` threshold. Must be + a number. + type: string + warningRecovery: + description: (String) The monitor WARNING recovery threshold. + Must be a number. The monitor `WARNING` recovery threshold. + Must be a number. + type: string + type: object + type: array + name: + description: (String) Name of Datadog monitor. Name of Datadog + monitor. + type: string + newGroupDelay: + description: "(Number) The time (in seconds) to skip evaluations + for new groups. The time (in seconds) to skip evaluations for + new groups. \n `new_group_delay` overrides `new_host_delay` + if it is set to a nonzero value." + type: number + newHostDelay: + description: negative integer. This value is ignored for simple + monitors and monitors not grouped by host. The only case when + this should be used is to override the default and set new_host_delay + to zero for monitors grouped by host. Deprecated. Use new_group_delay + except when setting new_host_delay to zero. Defaults to 300. + **Deprecated**. See `new_group_delay`. Time (in seconds) to + allow a host to boot and applications to fully start before + starting the evaluation of monitor results. Should be a non-negative + integer. This value is ignored for simple monitors and monitors + not grouped by host. The only case when this should be used + is to override the default and set `new_host_delay` to zero + for monitors grouped by host. **Deprecated.** Use `new_group_delay` + except when setting `new_host_delay` to zero. Defaults to `300`. + type: number + noDataTimeframe: + description: "(Number) The number of minutes before a monitor + will notify when data stops reporting. The number of minutes + before a monitor will notify when data stops reporting. \n We + recommend at least 2x the monitor timeframe for metric alerts + or 2 minutes for service checks. Defaults to `10`." + type: number + notificationPresetName: + description: (String) Toggles the display of additional content + sent in the monitor notification. Valid values are show_all, + hide_query, hide_handles, hide_all. Toggles the display of additional + content sent in the monitor notification. Valid values are `show_all`, + `hide_query`, `hide_handles`, `hide_all`. + type: string + notifyAudit: + description: (Boolean) A boolean indicating whether tagged users + will be notified on changes to this monitor. Defaults to false. + A boolean indicating whether tagged users will be notified on + changes to this monitor. Defaults to `false`. + type: boolean + notifyBy: + description: alert. Controls what granularity a monitor alerts + on. Only available for monitors with groupings. For instance, + a monitor grouped by `cluster`, `namespace`, and `pod` can be + configured to only notify on each new `cluster` violating the + alert conditions by setting `notify_by` to `['cluster']`. Tags + mentioned in `notify_by` must be a subset of the grouping tags + in the query. For example, a query grouped by `cluster` and + `namespace` cannot notify on `region`. Setting `notify_by` to + `[*]` configures the monitor to notify as a simple-alert. + items: + type: string + type: array + x-kubernetes-list-type: set + notifyNoData: + description: (Boolean) A boolean indicating whether this monitor + will notify when data stops reporting. Defaults to false. A + boolean indicating whether this monitor will notify when data + stops reporting. Defaults to `false`. + type: boolean + onMissingData: + description: '(String) Controls how groups or monitors are treated + if an evaluation does not return any data points. The default + option results in different behavior depending on the monitor + query type. For monitors using Count queries, an empty monitor + evaluation is treated as 0 and is compared to the threshold + conditions. For monitors using any query type other than Count, + for example Gauge, Measure, or Rate, the monitor shows the last + known status. This option is only available for APM Trace Analytics, + Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + Valid values are: show_no_data, show_and_notify_no_data, resolve, + and default. Controls how groups or monitors are treated if + an evaluation does not return any data points. The default option + results in different behavior depending on the monitor query + type. For monitors using `Count` queries, an empty monitor evaluation + is treated as 0 and is compared to the threshold conditions. + For monitors using any query type other than `Count`, for example + `Gauge`, `Measure`, or `Rate`, the monitor shows the last known + status. This option is only available for APM Trace Analytics, + Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. + Valid values are: `show_no_data`, `show_and_notify_no_data`, + `resolve`, and `default`.' + type: string + priority: + description: (Number) Integer from 1 (high) to 5 (low) indicating + alert severity. Integer from 1 (high) to 5 (low) indicating + alert severity. + type: number + query: + description: "(String) The monitor query to notify on. Note this + is not the same query you see in the UI and the syntax is different + depending on the monitor type, please see the API Reference + for details. The monitor query to notify on. Note this is not + the same query you see in the UI and the syntax is different + depending on the monitor type, please see the [API Reference](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor) + for details. \n **Note:** APM latency data is now available + as Distribution Metrics. We strongly recommend updating monitor + definitions to query the new metrics.datadoghq.com/tracing/guide/ddsketch_trace_metrics/)." + type: string + renotifyInterval: + description: notify on the current status. It will only re-notify + if it's not resolved. The number of minutes after the last notification + before a monitor will re-notify on the current status. It will + only re-notify if it's not resolved. + type: number + renotifyOccurrences: + description: notification messages that should be sent on the + current status. The number of re-notification messages that + should be sent on the current status. + type: number + renotifyStatuses: + description: notification messages should be sent. Valid values + are alert, warn, no data. The types of statuses for which re-notification + messages should be sent. Valid values are `alert`, `warn`, `no + data`. + items: + type: string + type: array + x-kubernetes-list-type: set + requireFullWindow: + description: (Boolean) A boolean indicating whether this monitor + needs a full window of data before it's evaluated. Datadog strongly + recommends you set this to false for sparse metrics, otherwise + some evaluations may be skipped. If there's a custom_schedule + set, require_full_window must be false and will be ignored. + Defaults to true. A boolean indicating whether this monitor + needs a full window of data before it's evaluated. Datadog strongly + recommends you set this to `false` for sparse metrics, otherwise + some evaluations may be skipped. If there's a custom_schedule + set, `require_full_window` must be false and will be ignored. + Defaults to `true`. + type: boolean + restrictedRoles: + description: (Set of String) A list of unique role identifiers + to define which roles are allowed to edit the monitor. Editing + a monitor includes any updates to the monitor configuration, + monitor deletion, and muting of the monitor for any amount of + time. Roles unique identifiers can be pulled from the Roles + API in the data.id field. A list of unique role identifiers + to define which roles are allowed to edit the monitor. Editing + a monitor includes any updates to the monitor configuration, + monitor deletion, and muting of the monitor for any amount of + time. Roles unique identifiers can be pulled from the [Roles + API](https://docs.datadoghq.com/api/latest/roles/#list-roles) + in the `data.id` field. + items: + type: string + type: array + x-kubernetes-list-type: set + schedulingOptions: + description: (Block List) Configuration options for scheduling. + (see below for nested schema) Configuration options for scheduling. + items: + properties: + customSchedule: + description: (Block List) Configuration options for the + custom schedules. If start is omitted, the monitor creation + time will be used. (see below for nested schema) Configuration + options for the custom schedules. If `start` is omitted, + the monitor creation time will be used. + items: + properties: + recurrence: + description: '(Block List, Min: 1, Max: 1) A list + of recurrence definitions. Length must be 1. (see + below for nested schema) A list of recurrence definitions. + Length must be 1.' + items: + properties: + rrule: + description: (String) Must be a valid rrule. + See API docs for supported fields Must be + a valid `rrule`. See API docs for supported + fields + type: string + start: + description: MM-DDThh:mm:ss' Time to start recurrence + cycle. Similar to DTSTART. Expected format + 'YYYY-MM-DDThh:mm:ss' + type: string + timezone: + description: '(String) ''tz database'' format. + Example: America/New_York or UTC ''tz database'' + format. Example: `America/New_York` or `UTC`' + type: string + type: object + type: array + type: object + type: array + evaluationWindow: + description: (Block List) Configuration options for the + evaluation window. If hour_starts is set, no other fields + may be set. Otherwise, day_starts and month_starts must + be set together. (see below for nested schema) Configuration + options for the evaluation window. If `hour_starts` is + set, no other fields may be set. Otherwise, `day_starts` + and `month_starts` must be set together. + items: + properties: + dayStarts: + description: (String) The time of the day at which + a one day cumulative evaluation window starts. Must + be defined in UTC time in HH:mm format. The time + of the day at which a one day cumulative evaluation + window starts. Must be defined in UTC time in `HH:mm` + format. + type: string + hourStarts: + description: (Number) The minute of the hour at which + a one hour cumulative evaluation window starts. + Must be between 0 and 59. The minute of the hour + at which a one hour cumulative evaluation window + starts. Must be between 0 and 59. + type: number + monthStarts: + description: (Number) The day of the month at which + a one month cumulative evaluation window starts. + Must be a value of 1. The day of the month at which + a one month cumulative evaluation window starts. + Must be a value of 1. + type: number + type: object + type: array + type: object + type: array + tags: + description: '(Set of String) A list of tags to associate with + your monitor. This can help you categorize and filter monitors + in the manage monitors page of the UI. Note: it''s not currently + possible to filter by these tags when querying via the API A + list of tags to associate with your monitor. This can help you + categorize and filter monitors in the manage monitors page of + the UI. Note: it''s not currently possible to filter by these + tags when querying via the API' + items: + type: string + type: array + x-kubernetes-list-type: set + timeoutH: + description: (Number) The number of hours of the monitor not reporting + data before it automatically resolves from a triggered state. + The minimum allowed value is 0 hours. The maximum allowed value + is 24 hours. The number of hours of the monitor not reporting + data before it automatically resolves from a triggered state. + The minimum allowed value is 0 hours. The maximum allowed value + is 24 hours. + type: number + type: + description: 'analytics alert, slo alert, event-v2 alert, audit + alert, ci-pipelines alert, ci-tests alert, error-tracking alert, + database-monitoring alert. The type of the monitor. The mapping + from these types to the types found in the Datadog Web UI can + be found in the Datadog API [documentation page](https://docs.datadoghq.com/api/v1/monitors/#create-a-monitor). + Note: The monitor type cannot be changed after a monitor is + created. Valid values are `composite`, `event alert`, `log alert`, + `metric alert`, `process alert`, `query alert`, `rum alert`, + `service check`, `synthetics alert`, `trace-analytics alert`, + `slo alert`, `event-v2 alert`, `audit alert`, `ci-pipelines + alert`, `ci-tests alert`, `error-tracking alert`, `database-monitoring + alert`.' + type: string + validate: + description: (Boolean) If set to false, skip the validation call + done during plan. If set to `false`, skip the validation call + done during plan. + type: boolean + variables: + description: '(Block List, Max: 1) (see below for nested schema)' + items: + properties: + eventQuery: + description: (Block List) A timeseries formula and functions + events query. (see below for nested schema) A timeseries + formula and functions events query. + items: + properties: + compute: + description: '(Block List, Min: 1) The compute options. + (see below for nested schema) The compute options.' + items: + properties: + aggregation: + description: (String) The aggregation methods + for event platform queries. Valid values are + count, cardinality, median, pc75, pc90, pc95, + pc98, pc99, sum, min, max, avg. The aggregation + methods for event platform queries. Valid + values are `count`, `cardinality`, `median`, + `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, `sum`, + `min`, `max`, `avg`. + type: string + interval: + description: (Number) A time interval in milliseconds. + A time interval in milliseconds. + type: number + metric: + description: (String) The measurable attribute + to compute. The measurable attribute to compute. + type: string + type: object + type: array + dataSource: + description: based queries. Valid values are rum, + ci_pipelines, ci_tests, audit, events, logs, spans, + database_queries. The data source for event platform-based + queries. Valid values are `rum`, `ci_pipelines`, + `ci_tests`, `audit`, `events`, `logs`, `spans`, + `database_queries`. + type: string + groupBy: + description: (Block List) Group by options. (see below + for nested schema) Group by options. + items: + properties: + facet: + description: (String) The event facet. The event + facet. + type: string + limit: + description: (Number) The number of groups to + return. The number of groups to return. + type: number + sort: + description: '(Block List, Max: 1) The options + for sorting group by results. (see below for + nested schema) The options for sorting group + by results.' + items: + properties: + aggregation: + description: (String) The aggregation + methods for event platform queries. + Valid values are count, cardinality, + median, pc75, pc90, pc95, pc98, pc99, + sum, min, max, avg. The aggregation + methods for the event platform queries. + Valid values are `count`, `cardinality`, + `median`, `pc75`, `pc90`, `pc95`, `pc98`, + `pc99`, `sum`, `min`, `max`, `avg`. + type: string + metric: + description: (String) The measurable attribute + to compute. The metric used for sorting + group by results. + type: string + order: + description: (String) Direction of sort. + Valid values are asc, desc. Direction + of sort. Valid values are `asc`, `desc`. + type: string + type: object + type: array + type: object + type: array + indexes: + description: (List of String) An array of index names + to query in the stream. An array of index names + to query in the stream. + items: + type: string + type: array + name: + description: (String) Name of Datadog monitor. The + name of query for use in formulas. + type: string + search: + description: '(Block List, Min: 1, Max: 1) The search + options. (see below for nested schema) The search + options.' + items: + properties: + query: + description: (String) The monitor query to notify + on. Note this is not the same query you see + in the UI and the syntax is different depending + on the monitor type, please see the API Reference + for details. The events search string. + type: string + type: object + type: array + type: object + type: array + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_organizationsettings.yaml b/package/crds/datadog.upbound.io_organizationsettings.yaml new file mode 100644 index 0000000..741d1ea --- /dev/null +++ b/package/crds/datadog.upbound.io_organizationsettings.yaml @@ -0,0 +1,602 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: organizationsettings.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: OrganizationSettings + listKind: OrganizationSettingsList + plural: organizationsettings + singular: organizationsettings + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: OrganizationSettings is the Schema for the OrganizationSettingss + API. Provides a Datadog Organization resource. This can be used to manage + your Datadog organization's settings. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: OrganizationSettingsSpec defines the desired state of OrganizationSettings + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: (String) Name for Organization. Name for Organization. + type: string + settings: + description: '(Block List, Max: 1) Organization settings (see + below for nested schema) Organization settings' + items: + properties: + privateWidgetShare: + description: (Boolean) Whether or not the organization users + can share widgets outside of Datadog. Defaults to false. + Whether or not the organization users can share widgets + outside of Datadog. Defaults to `false`. + type: boolean + saml: + description: '(Block List, Min: 1, Max: 1) SAML properties + (see below for nested schema) SAML properties' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not SAML is enabled for this organization. Defaults + to `false`. + type: boolean + type: object + type: array + samlAutocreateAccessRole: + description: 'only user). Allowed enum values: st, adm , + ro, ERROR Defaults to "st". The access role of the user. + Options are `st` (standard user), `adm` (admin user), + or `ro` (read-only user). Allowed enum values: `st`, `adm` + , `ro`, `ERROR` Defaults to `"st"`.' + type: string + samlAutocreateUsersDomains: + description: '(Block List, Min: 1, Max: 1) List of domains + where the SAML automated user creation is enabled. (see + below for nested schema) List of domains where the SAML + automated user creation is enabled.' + items: + properties: + domains: + description: (List of String) List of domains where + the SAML automated user creation is enabled. List + of domains where the SAML automated user creation + is enabled. + items: + type: string + type: array + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not the automated user creation based on SAML + domain is enabled. Defaults to `false`. + type: boolean + type: object + type: array + samlIdpInitiatedLogin: + description: '(Block List, Min: 1, Max: 1) Whether or not + a SAML identity provider metadata file was provided to + the Datadog organization. (see below for nested schema) + Whether or not a SAML identity provider metadata file + was provided to the Datadog organization.' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not a SAML identity provider metadata file was + provided to the Datadog organization. Defaults to + `false`. + type: boolean + type: object + type: array + samlStrictMode: + description: '(Block List, Min: 1, Max: 1) Whether or not + the SAML strict mode is enabled. If true, all users must + log in with SAML. (see below for nested schema) Whether + or not the SAML strict mode is enabled. If true, all users + must log in with SAML.' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not the SAML strict mode is enabled. If true, + all users must log in with SAML. Defaults to `false`. + type: boolean + type: object + type: array + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + name: + description: (String) Name for Organization. Name for Organization. + type: string + settings: + description: '(Block List, Max: 1) Organization settings (see + below for nested schema) Organization settings' + items: + properties: + privateWidgetShare: + description: (Boolean) Whether or not the organization users + can share widgets outside of Datadog. Defaults to false. + Whether or not the organization users can share widgets + outside of Datadog. Defaults to `false`. + type: boolean + saml: + description: '(Block List, Min: 1, Max: 1) SAML properties + (see below for nested schema) SAML properties' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not SAML is enabled for this organization. Defaults + to `false`. + type: boolean + type: object + type: array + samlAutocreateAccessRole: + description: 'only user). Allowed enum values: st, adm , + ro, ERROR Defaults to "st". The access role of the user. + Options are `st` (standard user), `adm` (admin user), + or `ro` (read-only user). Allowed enum values: `st`, `adm` + , `ro`, `ERROR` Defaults to `"st"`.' + type: string + samlAutocreateUsersDomains: + description: '(Block List, Min: 1, Max: 1) List of domains + where the SAML automated user creation is enabled. (see + below for nested schema) List of domains where the SAML + automated user creation is enabled.' + items: + properties: + domains: + description: (List of String) List of domains where + the SAML automated user creation is enabled. List + of domains where the SAML automated user creation + is enabled. + items: + type: string + type: array + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not the automated user creation based on SAML + domain is enabled. Defaults to `false`. + type: boolean + type: object + type: array + samlIdpInitiatedLogin: + description: '(Block List, Min: 1, Max: 1) Whether or not + a SAML identity provider metadata file was provided to + the Datadog organization. (see below for nested schema) + Whether or not a SAML identity provider metadata file + was provided to the Datadog organization.' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not a SAML identity provider metadata file was + provided to the Datadog organization. Defaults to + `false`. + type: boolean + type: object + type: array + samlStrictMode: + description: '(Block List, Min: 1, Max: 1) Whether or not + the SAML strict mode is enabled. If true, all users must + log in with SAML. (see below for nested schema) Whether + or not the SAML strict mode is enabled. If true, all users + must log in with SAML.' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not the SAML strict mode is enabled. If true, + all users must log in with SAML. Defaults to `false`. + type: boolean + type: object + type: array + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: OrganizationSettingsStatus defines the observed state of + OrganizationSettings. + properties: + atProvider: + properties: + description: + description: (String) Description of the organization. Description + of the organization. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name for Organization. Name for Organization. + type: string + publicId: + description: (String) The public_id of the organization you are + operating within. The `public_id` of the organization you are + operating within. + type: string + settings: + description: '(Block List, Max: 1) Organization settings (see + below for nested schema) Organization settings' + items: + properties: + privateWidgetShare: + description: (Boolean) Whether or not the organization users + can share widgets outside of Datadog. Defaults to false. + Whether or not the organization users can share widgets + outside of Datadog. Defaults to `false`. + type: boolean + saml: + description: '(Block List, Min: 1, Max: 1) SAML properties + (see below for nested schema) SAML properties' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not SAML is enabled for this organization. Defaults + to `false`. + type: boolean + type: object + type: array + samlAutocreateAccessRole: + description: 'only user). Allowed enum values: st, adm , + ro, ERROR Defaults to "st". The access role of the user. + Options are `st` (standard user), `adm` (admin user), + or `ro` (read-only user). Allowed enum values: `st`, `adm` + , `ro`, `ERROR` Defaults to `"st"`.' + type: string + samlAutocreateUsersDomains: + description: '(Block List, Min: 1, Max: 1) List of domains + where the SAML automated user creation is enabled. (see + below for nested schema) List of domains where the SAML + automated user creation is enabled.' + items: + properties: + domains: + description: (List of String) List of domains where + the SAML automated user creation is enabled. List + of domains where the SAML automated user creation + is enabled. + items: + type: string + type: array + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not the automated user creation based on SAML + domain is enabled. Defaults to `false`. + type: boolean + type: object + type: array + samlCanBeEnabled: + description: (Boolean) Whether or not SAML can be enabled + for this organization. Whether or not SAML can be enabled + for this organization. + type: boolean + samlIdpEndpoint: + description: (String) Identity provider endpoint for SAML + authentication. Identity provider endpoint for SAML authentication. + type: string + samlIdpInitiatedLogin: + description: '(Block List, Min: 1, Max: 1) Whether or not + a SAML identity provider metadata file was provided to + the Datadog organization. (see below for nested schema) + Whether or not a SAML identity provider metadata file + was provided to the Datadog organization.' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not a SAML identity provider metadata file was + provided to the Datadog organization. Defaults to + `false`. + type: boolean + type: object + type: array + samlIdpMetadataUploaded: + description: (Boolean) Whether or not a SAML identity provider + metadata file was provided to the Datadog organization. + Whether or not a SAML identity provider metadata file + was provided to the Datadog organization. + type: boolean + samlLoginUrl: + description: (String) URL for SAML logging. URL for SAML + logging. + type: string + samlStrictMode: + description: '(Block List, Min: 1, Max: 1) Whether or not + the SAML strict mode is enabled. If true, all users must + log in with SAML. (see below for nested schema) Whether + or not the SAML strict mode is enabled. If true, all users + must log in with SAML.' + items: + properties: + enabled: + description: (Boolean) Whether or not SAML is enabled + for this organization. Defaults to false. Whether + or not the SAML strict mode is enabled. If true, + all users must log in with SAML. Defaults to `false`. + type: boolean + type: object + type: array + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_powerpacks.yaml b/package/crds/datadog.upbound.io_powerpacks.yaml new file mode 100644 index 0000000..0a392da --- /dev/null +++ b/package/crds/datadog.upbound.io_powerpacks.yaml @@ -0,0 +1,535 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: powerpacks.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Powerpack + listKind: PowerpackList + plural: powerpacks + singular: powerpack + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Powerpack is the Schema for the Powerpacks API. Provides a Datadog + powerpack resource. This can be used to create and manage Datadog powerpacks. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PowerpackSpec defines the desired state of Powerpack + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) The description of the powerpack. The description + of the powerpack. + type: string + layout: + description: form dashboard. (see below for nested schema) The + layout of the powerpack on a free-form dashboard. + items: + properties: + height: + description: (Number) The height of the widget. The height + of the widget. + type: number + width: + description: (Number) The width of the widget. The width + of the widget. + type: number + x: + description: (Number) The position of the widget on the + x (horizontal) axis. Should be greater than or equal to + 0. The position of the widget on the x (horizontal) axis. + Should be greater than or equal to 0. + type: number + "y": + description: (Number) The position of the widget on the + y (vertical) axis. Should be greater than or equal to + 0. The position of the widget on the y (vertical) axis. + Should be greater than or equal to 0. + type: number + type: object + type: array + liveSpan: + description: (String) The timeframe to use when displaying the + widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, + 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + The timeframe to use when displaying the widget. Valid values + are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, + `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, + `1y`, `alert`. + type: string + name: + description: (String) The name for the powerpack. The name for + the powerpack. + type: string + showTitle: + description: (Boolean) Whether or not title should be displayed + in the powerpack. Whether or not title should be displayed in + the powerpack. + type: boolean + tags: + description: (Set of String) List of tags to identify this powerpack. + List of tags to identify this powerpack. + items: + type: string + type: array + x-kubernetes-list-type: set + templateVariables: + description: (Block List) The list of template variables for this + powerpack. (see below for nested schema) The list of template + variables for this powerpack. + items: + properties: + defaults: + description: (List of String) One or many default values + for powerpack template variables on load. If more than + one default is specified, they will be unioned together + with OR. One or many default values for powerpack template + variables on load. If more than one default is specified, + they will be unioned together with `OR`. + items: + type: string + type: array + name: + description: (String) The name for the powerpack. The name + of the powerpack template variable. + type: string + type: object + type: array + widget: + description: (Block List) The list of widgets to display in the + powerpack. (see below for nested schema) (String) The JSON formatted + definition of the list of widgets to display in the powerpack. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) The description of the powerpack. The description + of the powerpack. + type: string + layout: + description: form dashboard. (see below for nested schema) The + layout of the powerpack on a free-form dashboard. + items: + properties: + height: + description: (Number) The height of the widget. The height + of the widget. + type: number + width: + description: (Number) The width of the widget. The width + of the widget. + type: number + x: + description: (Number) The position of the widget on the + x (horizontal) axis. Should be greater than or equal to + 0. The position of the widget on the x (horizontal) axis. + Should be greater than or equal to 0. + type: number + "y": + description: (Number) The position of the widget on the + y (vertical) axis. Should be greater than or equal to + 0. The position of the widget on the y (vertical) axis. + Should be greater than or equal to 0. + type: number + type: object + type: array + liveSpan: + description: (String) The timeframe to use when displaying the + widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, + 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + The timeframe to use when displaying the widget. Valid values + are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, + `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, + `1y`, `alert`. + type: string + name: + description: (String) The name for the powerpack. The name for + the powerpack. + type: string + showTitle: + description: (Boolean) Whether or not title should be displayed + in the powerpack. Whether or not title should be displayed in + the powerpack. + type: boolean + tags: + description: (Set of String) List of tags to identify this powerpack. + List of tags to identify this powerpack. + items: + type: string + type: array + x-kubernetes-list-type: set + templateVariables: + description: (Block List) The list of template variables for this + powerpack. (see below for nested schema) The list of template + variables for this powerpack. + items: + properties: + defaults: + description: (List of String) One or many default values + for powerpack template variables on load. If more than + one default is specified, they will be unioned together + with OR. One or many default values for powerpack template + variables on load. If more than one default is specified, + they will be unioned together with `OR`. + items: + type: string + type: array + name: + description: (String) The name for the powerpack. The name + of the powerpack template variable. + type: string + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: PowerpackStatus defines the observed state of Powerpack. + properties: + atProvider: + properties: + description: + description: (String) The description of the powerpack. The description + of the powerpack. + type: string + id: + description: (String) The ID of this resource. + type: string + layout: + description: form dashboard. (see below for nested schema) The + layout of the powerpack on a free-form dashboard. + items: + properties: + height: + description: (Number) The height of the widget. The height + of the widget. + type: number + width: + description: (Number) The width of the widget. The width + of the widget. + type: number + x: + description: (Number) The position of the widget on the + x (horizontal) axis. Should be greater than or equal to + 0. The position of the widget on the x (horizontal) axis. + Should be greater than or equal to 0. + type: number + "y": + description: (Number) The position of the widget on the + y (vertical) axis. Should be greater than or equal to + 0. The position of the widget on the y (vertical) axis. + Should be greater than or equal to 0. + type: number + type: object + type: array + liveSpan: + description: (String) The timeframe to use when displaying the + widget. Valid values are 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d, + 2d, 1w, 1mo, 3mo, 6mo, week_to_date, month_to_date, 1y, alert. + The timeframe to use when displaying the widget. Valid values + are `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `4h`, `1d`, `2d`, + `1w`, `1mo`, `3mo`, `6mo`, `week_to_date`, `month_to_date`, + `1y`, `alert`. + type: string + name: + description: (String) The name for the powerpack. The name for + the powerpack. + type: string + showTitle: + description: (Boolean) Whether or not title should be displayed + in the powerpack. Whether or not title should be displayed in + the powerpack. + type: boolean + tags: + description: (Set of String) List of tags to identify this powerpack. + List of tags to identify this powerpack. + items: + type: string + type: array + x-kubernetes-list-type: set + templateVariables: + description: (Block List) The list of template variables for this + powerpack. (see below for nested schema) The list of template + variables for this powerpack. + items: + properties: + defaults: + description: (List of String) One or many default values + for powerpack template variables on load. If more than + one default is specified, they will be unioned together + with OR. One or many default values for powerpack template + variables on load. If more than one default is specified, + they will be unioned together with `OR`. + items: + type: string + type: array + name: + description: (String) The name for the powerpack. The name + of the powerpack template variable. + type: string + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/template.upbound.io_providerconfigs.yaml b/package/crds/datadog.upbound.io_providerconfigs.yaml similarity index 68% rename from package/crds/template.upbound.io_providerconfigs.yaml rename to package/crds/datadog.upbound.io_providerconfigs.yaml index 595fa90..87687a1 100644 --- a/package/crds/template.upbound.io_providerconfigs.yaml +++ b/package/crds/datadog.upbound.io_providerconfigs.yaml @@ -4,14 +4,14 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.13.0 - name: providerconfigs.template.upbound.io + name: providerconfigs.datadog.upbound.io spec: - group: template.upbound.io + group: datadog.upbound.io names: categories: - crossplane - provider - - template + - datadog kind: ProviderConfig listKind: ProviderConfigList plural: providerconfigs @@ -29,7 +29,7 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: A ProviderConfig configures a Template provider. + description: A ProviderConfig configures a Datadog provider. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -46,6 +46,26 @@ spec: spec: description: A ProviderConfigSpec defines the desired state of a ProviderConfig. properties: + api_key: + description: (String, Sensitive) (Required unless validate is false) + Datadog API key. This can also be set via the DD_API_KEY environment + variable. + type: string + api_url: + description: '(String) The API URL. This can also be set via the DD_HOST + environment variable. Note that this URL must not end with the /api/ + path. For example, https://api.datadoghq.com/ is a correct value, + while https://api.datadoghq.com/api/ is not. And if you''re working + with "EU" version of Datadog, use https://api.datadoghq.eu/. Other + Datadog region examples: https://api.us5.datadoghq.com/, https://api.us3.datadoghq.com/ + and https://api.ddog-gov.com/. See https://docs.datadoghq.com/getting_started/site/ + for all available regions.' + type: string + app_key: + description: (String, Sensitive) (Required unless validate is false) + Datadog APP key. This can also be set via the DD_APP_KEY environment + variable. + type: string credentials: description: Credentials required to authenticate to this provider. properties: @@ -99,8 +119,31 @@ spec: required: - source type: object - required: - - credentials + http_client_retry_backoff_base: + description: (Number) The HTTP request retry back off base. Defaults + to 2. + type: integer + http_client_retry_backoff_multiplier: + description: (Number) The HTTP request retry back off multiplier. + Defaults to 2. + type: integer + http_client_retry_enabled: + description: (String) Enables request retries on HTTP status codes + 429 and 5xx. Valid values are [true, false]. Defaults to true. + type: string + http_client_retry_max_retries: + description: (Number) The HTTP request maximum retry number. Defaults + to 3. + type: integer + http_client_retry_timeout: + description: (Number) The HTTP request retry timeout period. Defaults + to 60 seconds. + type: integer + validate: + description: (String) Enables validation of the provided API key during + provider initialization. Valid values are [true, false]. Default + is true. When false, api_key won't be checked. + type: string type: object status: description: A ProviderConfigStatus reflects the observed state of a ProviderConfig. diff --git a/package/crds/template.upbound.io_providerconfigusages.yaml b/package/crds/datadog.upbound.io_providerconfigusages.yaml similarity index 97% rename from package/crds/template.upbound.io_providerconfigusages.yaml rename to package/crds/datadog.upbound.io_providerconfigusages.yaml index 5a2bc1d..64e91dd 100644 --- a/package/crds/template.upbound.io_providerconfigusages.yaml +++ b/package/crds/datadog.upbound.io_providerconfigusages.yaml @@ -4,14 +4,14 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.13.0 - name: providerconfigusages.template.upbound.io + name: providerconfigusages.datadog.upbound.io spec: - group: template.upbound.io + group: datadog.upbound.io names: categories: - crossplane - provider - - template + - datadog kind: ProviderConfigUsage listKind: ProviderConfigUsageList plural: providerconfigusages diff --git a/package/crds/datadog.upbound.io_restrictionpolicies.yaml b/package/crds/datadog.upbound.io_restrictionpolicies.yaml new file mode 100644 index 0000000..beb97ae --- /dev/null +++ b/package/crds/datadog.upbound.io_restrictionpolicies.yaml @@ -0,0 +1,395 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: restrictionpolicies.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: RestrictionPolicy + listKind: RestrictionPolicyList + plural: restrictionpolicies + singular: restrictionpolicy + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: RestrictionPolicy is the Schema for the RestrictionPolicys API. + Provides a Datadog RestrictionPolicy resource. This can be used to create + and manage Datadog restriction policies. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RestrictionPolicySpec defines the desired state of RestrictionPolicy + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + bindings: + description: (Block Set) (see below for nested schema) + items: + properties: + principals: + description: '(Set of String) An array of principals. A + principal is a subject or group of subjects. Each principal + is formatted as type:id. Supported types: role and org. + The org ID can be obtained through the api/v2/users API. + An array of principals. A principal is a subject or group + of subjects. Each principal is formatted as `type:id`. + Supported types: `role` and `org`. The org ID can be obtained + through the api/v2/users API.' + items: + type: string + type: array + x-kubernetes-list-type: set + relation: + description: policies/#supported-relations-for-resources + The role/level of access. See this page for more details + https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources + type: string + type: object + type: array + resourceId: + description: "(String) Identifier for the resource, formatted + as resource_type:resource_id. Identifier for the resource, formatted + as resource_type:resource_id. \n Note: Dashboards support is + in private beta. Reach out to your Datadog contact or support + to enable this." + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + bindings: + description: (Block Set) (see below for nested schema) + items: + properties: + principals: + description: '(Set of String) An array of principals. A + principal is a subject or group of subjects. Each principal + is formatted as type:id. Supported types: role and org. + The org ID can be obtained through the api/v2/users API. + An array of principals. A principal is a subject or group + of subjects. Each principal is formatted as `type:id`. + Supported types: `role` and `org`. The org ID can be obtained + through the api/v2/users API.' + items: + type: string + type: array + x-kubernetes-list-type: set + relation: + description: policies/#supported-relations-for-resources + The role/level of access. See this page for more details + https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources + type: string + type: object + type: array + resourceId: + description: "(String) Identifier for the resource, formatted + as resource_type:resource_id. Identifier for the resource, formatted + as resource_type:resource_id. \n Note: Dashboards support is + in private beta. Reach out to your Datadog contact or support + to enable this." + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.resourceId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.resourceId) + || (has(self.initProvider) && has(self.initProvider.resourceId))' + status: + description: RestrictionPolicyStatus defines the observed state of RestrictionPolicy. + properties: + atProvider: + properties: + bindings: + description: (Block Set) (see below for nested schema) + items: + properties: + principals: + description: '(Set of String) An array of principals. A + principal is a subject or group of subjects. Each principal + is formatted as type:id. Supported types: role and org. + The org ID can be obtained through the api/v2/users API. + An array of principals. A principal is a subject or group + of subjects. Each principal is formatted as `type:id`. + Supported types: `role` and `org`. The org ID can be obtained + through the api/v2/users API.' + items: + type: string + type: array + x-kubernetes-list-type: set + relation: + description: policies/#supported-relations-for-resources + The role/level of access. See this page for more details + https://docs.datadoghq.com/api/latest/restriction-policies/#supported-relations-for-resources + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + resourceId: + description: "(String) Identifier for the resource, formatted + as resource_type:resource_id. Identifier for the resource, formatted + as resource_type:resource_id. \n Note: Dashboards support is + in private beta. Reach out to your Datadog contact or support + to enable this." + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_roles.yaml b/package/crds/datadog.upbound.io_roles.yaml new file mode 100644 index 0000000..f3e6dc0 --- /dev/null +++ b/package/crds/datadog.upbound.io_roles.yaml @@ -0,0 +1,371 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: roles.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Role + listKind: RoleList + plural: roles + singular: role + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Role is the Schema for the Roles API. Provides a Datadog role + resource. This can be used to create and manage Datadog roles. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RoleSpec defines the desired state of Role + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: (String) Name of the role. Name of the role. + type: string + permission: + description: (Block Set) Set of objects containing the permission + ID and the name of the permissions granted to this role. (see + below for nested schema) Set of objects containing the permission + ID and the name of the permissions granted to this role. + items: + properties: + id: + description: (String) The ID of this resource. ID of the + permission to assign. + type: string + type: object + type: array + validate: + description: (Boolean) If set to false, skip the validation call + done during plan. If set to `false`, skip the validation call + done during plan. + type: boolean + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + name: + description: (String) Name of the role. Name of the role. + type: string + permission: + description: (Block Set) Set of objects containing the permission + ID and the name of the permissions granted to this role. (see + below for nested schema) Set of objects containing the permission + ID and the name of the permissions granted to this role. + items: + properties: + id: + description: (String) The ID of this resource. ID of the + permission to assign. + type: string + type: object + type: array + validate: + description: (Boolean) If set to false, skip the validation call + done during plan. If set to `false`, skip the validation call + done during plan. + type: boolean + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: RoleStatus defines the observed state of Role. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name of the role. Name of the role. + type: string + permission: + description: (Block Set) Set of objects containing the permission + ID and the name of the permissions granted to this role. (see + below for nested schema) Set of objects containing the permission + ID and the name of the permissions granted to this role. + items: + properties: + id: + description: (String) The ID of this resource. ID of the + permission to assign. + type: string + name: + description: (String) Name of the role. Name of the permission. + type: string + type: object + type: array + userCount: + description: (Number) Number of users that have this role. Number + of users that have this role. + type: number + validate: + description: (Boolean) If set to false, skip the validation call + done during plan. If set to `false`, skip the validation call + done during plan. + type: boolean + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_rumapplications.yaml b/package/crds/datadog.upbound.io_rumapplications.yaml new file mode 100644 index 0000000..6488812 --- /dev/null +++ b/package/crds/datadog.upbound.io_rumapplications.yaml @@ -0,0 +1,332 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: rumapplications.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: RUMApplication + listKind: RUMApplicationList + plural: rumapplications + singular: rumapplication + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: RUMApplication is the Schema for the RUMApplications API. Provides + a Datadog RUM application resource. This can be used to create and manage + Datadog RUM applications. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RUMApplicationSpec defines the desired state of RUMApplication + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: (String) Name of the RUM application. Name of the + RUM application. + type: string + type: + description: native, flutter. Defaults to "browser". Type of the + RUM application. Supported values are `browser`, `ios`, `android`, + `react-native`, `flutter`. Defaults to `"browser"`. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + name: + description: (String) Name of the RUM application. Name of the + RUM application. + type: string + type: + description: native, flutter. Defaults to "browser". Type of the + RUM application. Supported values are `browser`, `ios`, `android`, + `react-native`, `flutter`. Defaults to `"browser"`. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: RUMApplicationStatus defines the observed state of RUMApplication. + properties: + atProvider: + properties: + clientToken: + description: (String) The client token. The client token. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name of the RUM application. Name of the + RUM application. + type: string + type: + description: native, flutter. Defaults to "browser". Type of the + RUM application. Supported values are `browser`, `ios`, `android`, + `react-native`, `flutter`. Defaults to `"browser"`. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_serviceaccountapplicationkeys.yaml b/package/crds/datadog.upbound.io_serviceaccountapplicationkeys.yaml new file mode 100644 index 0000000..23270ef --- /dev/null +++ b/package/crds/datadog.upbound.io_serviceaccountapplicationkeys.yaml @@ -0,0 +1,340 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: serviceaccountapplicationkeys.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ServiceAccountApplicationKey + listKind: ServiceAccountApplicationKeyList + plural: serviceaccountapplicationkeys + singular: serviceaccountapplicationkey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ServiceAccountApplicationKey is the Schema for the ServiceAccountApplicationKeys + API. Provides a Datadog service_account_application_key resource. This can + be used to create and manage Datadog service account application keys. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ServiceAccountApplicationKeySpec defines the desired state + of ServiceAccountApplicationKey + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: (String) Name of the application key. Name of the + application key. + type: string + serviceAccountId: + description: (String) ID of the service account that owns this + key. ID of the service account that owns this key. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + name: + description: (String) Name of the application key. Name of the + application key. + type: string + serviceAccountId: + description: (String) ID of the service account that owns this + key. ID of the service account that owns this key. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.serviceAccountId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.serviceAccountId) + || (has(self.initProvider) && has(self.initProvider.serviceAccountId))' + status: + description: ServiceAccountApplicationKeyStatus defines the observed state + of ServiceAccountApplicationKey. + properties: + atProvider: + properties: + createdAt: + description: (String) Creation date of the application key. Creation + date of the application key. + type: string + id: + description: (String) The ID of this resource. + type: string + last4: + description: (String) The last four characters of the application + key. The last four characters of the application key. + type: string + name: + description: (String) Name of the application key. Name of the + application key. + type: string + serviceAccountId: + description: (String) ID of the service account that owns this + key. ID of the service account that owns this key. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_serviceaccounts.yaml b/package/crds/datadog.upbound.io_serviceaccounts.yaml new file mode 100644 index 0000000..fe0eb8b --- /dev/null +++ b/package/crds/datadog.upbound.io_serviceaccounts.yaml @@ -0,0 +1,365 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: serviceaccounts.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ServiceAccount + listKind: ServiceAccountList + plural: serviceaccounts + singular: serviceaccount + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ServiceAccount is the Schema for the ServiceAccounts API. Provides + a Datadog service account resource. This can be used to create and manage + Datadog service accounts. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ServiceAccountSpec defines the desired state of ServiceAccount + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + disabled: + description: (Boolean) Whether the service account is disabled. + Defaults to false. Whether the service account is disabled. + Defaults to `false`. + type: boolean + email: + description: (String) Email of the associated user. Email of the + associated user. + type: string + name: + description: (String) Name for the service account. Name for the + service account. + type: string + roles: + description: (Set of String) A list a role IDs to assign to the + service account. A list a role IDs to assign to the service + account. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + disabled: + description: (Boolean) Whether the service account is disabled. + Defaults to false. Whether the service account is disabled. + Defaults to `false`. + type: boolean + email: + description: (String) Email of the associated user. Email of the + associated user. + type: string + name: + description: (String) Name for the service account. Name for the + service account. + type: string + roles: + description: (Set of String) A list a role IDs to assign to the + service account. A list a role IDs to assign to the service + account. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.email is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.email) + || (has(self.initProvider) && has(self.initProvider.email))' + status: + description: ServiceAccountStatus defines the observed state of ServiceAccount. + properties: + atProvider: + properties: + disabled: + description: (Boolean) Whether the service account is disabled. + Defaults to false. Whether the service account is disabled. + Defaults to `false`. + type: boolean + email: + description: (String) Email of the associated user. Email of the + associated user. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name for the service account. Name for the + service account. + type: string + roles: + description: (Set of String) A list a role IDs to assign to the + service account. A list a role IDs to assign to the service + account. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_servicedefinitionyamls.yaml b/package/crds/datadog.upbound.io_servicedefinitionyamls.yaml new file mode 100644 index 0000000..072e69a --- /dev/null +++ b/package/crds/datadog.upbound.io_servicedefinitionyamls.yaml @@ -0,0 +1,316 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: servicedefinitionyamls.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ServiceDefinitionYAML + listKind: ServiceDefinitionYAMLList + plural: servicedefinitionyamls + singular: servicedefinitionyaml + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ServiceDefinitionYAML is the Schema for the ServiceDefinitionYAMLs + API. Provides a Datadog service definition resource. This can be used to + create and manage Datadog service definitions in the service catalog using + the YAML/JSON definition. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ServiceDefinitionYAMLSpec defines the desired state of ServiceDefinitionYAML + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + serviceDefinition: + description: (String) The YAML/JSON formatted definition of the + service The YAML/JSON formatted definition of the service + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + serviceDefinition: + description: (String) The YAML/JSON formatted definition of the + service The YAML/JSON formatted definition of the service + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.serviceDefinition is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.serviceDefinition) + || (has(self.initProvider) && has(self.initProvider.serviceDefinition))' + status: + description: ServiceDefinitionYAMLStatus defines the observed state of + ServiceDefinitionYAML. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + serviceDefinition: + description: (String) The YAML/JSON formatted definition of the + service The YAML/JSON formatted definition of the service + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_servicelevelobjectives.yaml b/package/crds/datadog.upbound.io_servicelevelobjectives.yaml new file mode 100644 index 0000000..9940b50 --- /dev/null +++ b/package/crds/datadog.upbound.io_servicelevelobjectives.yaml @@ -0,0 +1,973 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: servicelevelobjectives.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ServiceLevelObjective + listKind: ServiceLevelObjectiveList + plural: servicelevelobjectives + singular: servicelevelobjective + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ServiceLevelObjective is the Schema for the ServiceLevelObjectives + API. Provides a Datadog service level objective resource. This can be used + to create and manage Datadog service level objectives. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ServiceLevelObjectiveSpec defines the desired state of ServiceLevelObjective + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) A description of this service level objective. + A description of this service level objective. + type: string + forceDelete: + description: (Boolean) A boolean indicating whether this monitor + can be deleted even if it's referenced by other resources (for + example, dashboards). A boolean indicating whether this monitor + can be deleted even if it's referenced by other resources (for + example, dashboards). + type: boolean + groups: + description: based SLOs A static set of groups to filter monitor-based + SLOs + items: + type: string + type: array + x-kubernetes-list-type: set + monitorIds: + description: (Set of Number) A static set of monitor IDs to use + as part of the SLO A static set of monitor IDs to use as part + of the SLO + items: + type: number + type: array + x-kubernetes-list-type: set + name: + description: (String) Name of Datadog service level objective + Name of Datadog service level objective + type: string + query: + description: '(Block List, Max: 1) The metric query of good / + total events (see below for nested schema) The metric query + of good / total events' + items: + properties: + denominator: + description: (String) The sum of the total events. The sum + of the `total` events. + type: string + numerator: + description: (String) The sum of all the good events. The + sum of all the `good` events. + type: string + type: object + type: array + sliSpecification: + description: '(Block List, Max: 1) A map of SLI specifications + to use as part of the SLO. (see below for nested schema) A map + of SLI specifications to use as part of the SLO.' + items: + properties: + timeSlice: + description: '(Block List, Min: 1, Max: 1) The time slice + condition, composed of 3 parts: 1. The timeseries query, + 2. The comparator, and 3. The threshold. (see below for + nested schema) The time slice condition, composed of 3 + parts: 1. The timeseries query, 2. The comparator, and + 3. The threshold.' + items: + properties: + comparator: + description: (String) The comparator used to compare + the SLI value to the threshold. Valid values are + >, >=, <, <=. The comparator used to compare the + SLI value to the threshold. Valid values are `>`, + `>=`, `<`, `<=`. + type: string + query: + description: '(Block List, Max: 1) The metric query + of good / total events (see below for nested schema) + A timeseries query, containing named data-source-specific + queries and a formula involving the named queries.' + items: + properties: + formula: + description: slice SLO. (see below for nested + schema) A list that contains exactly one formula, + as only a single formula may be used to define + a timeseries query for a time-slice SLO. + items: + properties: + formulaExpression: + description: (String) The formula string, + which is an expression involving named + queries. The formula string, which is + an expression involving named queries. + type: string + type: object + type: array + query: + description: '(Block List, Max: 1) The metric + query of good / total events (see below for + nested schema) A list of data-source-specific + queries that are in the formula.' + items: + properties: + metricQuery: + description: '(Block List, Max: 1) A timeseries + formula and functions metrics query. + (see below for nested schema) A timeseries + formula and functions metrics query.' + items: + properties: + dataSource: + description: (String) The data source + for metrics queries. Defaults + to "metrics". The data source + for metrics queries. Defaults + to `"metrics"`. + type: string + name: + description: (String) Name of Datadog + service level objective The name + of the query for use in formulas. + type: string + query: + description: '(Block List, Max: + 1) The metric query of good / + total events (see below for nested + schema) The metrics query definition.' + type: string + type: object + type: array + type: object + type: array + type: object + type: array + threshold: + description: (Number) The threshold value to which + each SLI value will be compared. The threshold value + to which each SLI value will be compared. + type: number + type: object + type: array + type: object + type: array + tags: + description: '(Set of String) A list of tags to associate with + your service level objective. This can help you categorize and + filter service level objectives in the service level objectives + page of the UI. Note: it''s not currently possible to filter + by these tags when querying via the API A list of tags to associate + with your service level objective. This can help you categorize + and filter service level objectives in the service level objectives + page of the UI. Note: it''s not currently possible to filter + by these tags when querying via the API' + items: + type: string + type: array + x-kubernetes-list-type: set + targetThreshold: + description: (Number) The objective's target in (0,100). This + must match the corresponding thresholds of the primary time + frame. The objective's target in `(0,100)`. This must match + the corresponding thresholds of the primary time frame. + type: number + thresholds: + description: '(Block List, Min: 1) A list of thresholds and targets + that define the service level objectives from the provided SLIs. + (see below for nested schema) A list of thresholds and targets + that define the service level objectives from the provided SLIs.' + items: + properties: + target: + description: (Number) The objective's target in (0,100). + The objective's target in `(0,100)`. + type: number + timeframe: + description: (String) The primary time frame for the objective. + The mapping from these types to the types found in the + Datadog Web UI can be found in the Datadog API documentation + page. Valid values are 7d, 30d, 90d, custom. The time + frame for the objective. The mapping from these types + to the types found in the Datadog Web UI can be found + in the Datadog API documentation page. Valid values are + `7d`, `30d`, `90d`, `custom`. + type: string + warning: + description: (Number) The objective's warning value in (0,100). + This must be greater than the target value. The objective's + warning value in `(0,100)`. This must be greater than + the target value. + type: number + type: object + type: array + timeframe: + description: (String) The primary time frame for the objective. + The mapping from these types to the types found in the Datadog + Web UI can be found in the Datadog API documentation page. Valid + values are 7d, 30d, 90d, custom. The primary time frame for + the objective. The mapping from these types to the types found + in the Datadog Web UI can be found in the Datadog API documentation + page. Valid values are `7d`, `30d`, `90d`, `custom`. + type: string + type: + description: (String) The type of the service level objective. + The mapping from these types to the types found in the Datadog + Web UI can be found in the Datadog API documentation page. Valid + values are metric, monitor, time_slice. The type of the service + level objective. The mapping from these types to the types found + in the Datadog Web UI can be found in the Datadog API [documentation + page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). + Valid values are `metric`, `monitor`, `time_slice`. + type: string + validate: + description: (Boolean) Whether or not to validate the SLO. Whether + or not to validate the SLO. + type: boolean + warningThreshold: + description: (Number) The objective's warning value in (0,100). + This must be greater than the target value and match the corresponding + thresholds of the primary time frame. The objective's warning + value in `(0,100)`. This must be greater than the target value + and match the corresponding thresholds of the primary time frame. + type: number + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) A description of this service level objective. + A description of this service level objective. + type: string + forceDelete: + description: (Boolean) A boolean indicating whether this monitor + can be deleted even if it's referenced by other resources (for + example, dashboards). A boolean indicating whether this monitor + can be deleted even if it's referenced by other resources (for + example, dashboards). + type: boolean + groups: + description: based SLOs A static set of groups to filter monitor-based + SLOs + items: + type: string + type: array + x-kubernetes-list-type: set + monitorIds: + description: (Set of Number) A static set of monitor IDs to use + as part of the SLO A static set of monitor IDs to use as part + of the SLO + items: + type: number + type: array + x-kubernetes-list-type: set + name: + description: (String) Name of Datadog service level objective + Name of Datadog service level objective + type: string + query: + description: '(Block List, Max: 1) The metric query of good / + total events (see below for nested schema) The metric query + of good / total events' + items: + properties: + denominator: + description: (String) The sum of the total events. The sum + of the `total` events. + type: string + numerator: + description: (String) The sum of all the good events. The + sum of all the `good` events. + type: string + type: object + type: array + sliSpecification: + description: '(Block List, Max: 1) A map of SLI specifications + to use as part of the SLO. (see below for nested schema) A map + of SLI specifications to use as part of the SLO.' + items: + properties: + timeSlice: + description: '(Block List, Min: 1, Max: 1) The time slice + condition, composed of 3 parts: 1. The timeseries query, + 2. The comparator, and 3. The threshold. (see below for + nested schema) The time slice condition, composed of 3 + parts: 1. The timeseries query, 2. The comparator, and + 3. The threshold.' + items: + properties: + comparator: + description: (String) The comparator used to compare + the SLI value to the threshold. Valid values are + >, >=, <, <=. The comparator used to compare the + SLI value to the threshold. Valid values are `>`, + `>=`, `<`, `<=`. + type: string + query: + description: '(Block List, Max: 1) The metric query + of good / total events (see below for nested schema) + A timeseries query, containing named data-source-specific + queries and a formula involving the named queries.' + items: + properties: + formula: + description: slice SLO. (see below for nested + schema) A list that contains exactly one formula, + as only a single formula may be used to define + a timeseries query for a time-slice SLO. + items: + properties: + formulaExpression: + description: (String) The formula string, + which is an expression involving named + queries. The formula string, which is + an expression involving named queries. + type: string + type: object + type: array + query: + description: '(Block List, Max: 1) The metric + query of good / total events (see below for + nested schema) A list of data-source-specific + queries that are in the formula.' + items: + properties: + metricQuery: + description: '(Block List, Max: 1) A timeseries + formula and functions metrics query. + (see below for nested schema) A timeseries + formula and functions metrics query.' + items: + properties: + dataSource: + description: (String) The data source + for metrics queries. Defaults + to "metrics". The data source + for metrics queries. Defaults + to `"metrics"`. + type: string + name: + description: (String) Name of Datadog + service level objective The name + of the query for use in formulas. + type: string + query: + description: '(Block List, Max: + 1) The metric query of good / + total events (see below for nested + schema) The metrics query definition.' + type: string + type: object + type: array + type: object + type: array + type: object + type: array + threshold: + description: (Number) The threshold value to which + each SLI value will be compared. The threshold value + to which each SLI value will be compared. + type: number + type: object + type: array + type: object + type: array + tags: + description: '(Set of String) A list of tags to associate with + your service level objective. This can help you categorize and + filter service level objectives in the service level objectives + page of the UI. Note: it''s not currently possible to filter + by these tags when querying via the API A list of tags to associate + with your service level objective. This can help you categorize + and filter service level objectives in the service level objectives + page of the UI. Note: it''s not currently possible to filter + by these tags when querying via the API' + items: + type: string + type: array + x-kubernetes-list-type: set + targetThreshold: + description: (Number) The objective's target in (0,100). This + must match the corresponding thresholds of the primary time + frame. The objective's target in `(0,100)`. This must match + the corresponding thresholds of the primary time frame. + type: number + thresholds: + description: '(Block List, Min: 1) A list of thresholds and targets + that define the service level objectives from the provided SLIs. + (see below for nested schema) A list of thresholds and targets + that define the service level objectives from the provided SLIs.' + items: + properties: + target: + description: (Number) The objective's target in (0,100). + The objective's target in `(0,100)`. + type: number + timeframe: + description: (String) The primary time frame for the objective. + The mapping from these types to the types found in the + Datadog Web UI can be found in the Datadog API documentation + page. Valid values are 7d, 30d, 90d, custom. The time + frame for the objective. The mapping from these types + to the types found in the Datadog Web UI can be found + in the Datadog API documentation page. Valid values are + `7d`, `30d`, `90d`, `custom`. + type: string + warning: + description: (Number) The objective's warning value in (0,100). + This must be greater than the target value. The objective's + warning value in `(0,100)`. This must be greater than + the target value. + type: number + type: object + type: array + timeframe: + description: (String) The primary time frame for the objective. + The mapping from these types to the types found in the Datadog + Web UI can be found in the Datadog API documentation page. Valid + values are 7d, 30d, 90d, custom. The primary time frame for + the objective. The mapping from these types to the types found + in the Datadog Web UI can be found in the Datadog API documentation + page. Valid values are `7d`, `30d`, `90d`, `custom`. + type: string + type: + description: (String) The type of the service level objective. + The mapping from these types to the types found in the Datadog + Web UI can be found in the Datadog API documentation page. Valid + values are metric, monitor, time_slice. The type of the service + level objective. The mapping from these types to the types found + in the Datadog Web UI can be found in the Datadog API [documentation + page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). + Valid values are `metric`, `monitor`, `time_slice`. + type: string + validate: + description: (Boolean) Whether or not to validate the SLO. Whether + or not to validate the SLO. + type: boolean + warningThreshold: + description: (Number) The objective's warning value in (0,100). + This must be greater than the target value and match the corresponding + thresholds of the primary time frame. The objective's warning + value in `(0,100)`. This must be greater than the target value + and match the corresponding thresholds of the primary time frame. + type: number + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.thresholds is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.thresholds) + || (has(self.initProvider) && has(self.initProvider.thresholds))' + - message: spec.forProvider.type is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.type) + || (has(self.initProvider) && has(self.initProvider.type))' + status: + description: ServiceLevelObjectiveStatus defines the observed state of + ServiceLevelObjective. + properties: + atProvider: + properties: + description: + description: (String) A description of this service level objective. + A description of this service level objective. + type: string + forceDelete: + description: (Boolean) A boolean indicating whether this monitor + can be deleted even if it's referenced by other resources (for + example, dashboards). A boolean indicating whether this monitor + can be deleted even if it's referenced by other resources (for + example, dashboards). + type: boolean + groups: + description: based SLOs A static set of groups to filter monitor-based + SLOs + items: + type: string + type: array + x-kubernetes-list-type: set + id: + description: (String) The ID of this resource. + type: string + monitorIds: + description: (Set of Number) A static set of monitor IDs to use + as part of the SLO A static set of monitor IDs to use as part + of the SLO + items: + type: number + type: array + x-kubernetes-list-type: set + name: + description: (String) Name of Datadog service level objective + Name of Datadog service level objective + type: string + query: + description: '(Block List, Max: 1) The metric query of good / + total events (see below for nested schema) The metric query + of good / total events' + items: + properties: + denominator: + description: (String) The sum of the total events. The sum + of the `total` events. + type: string + numerator: + description: (String) The sum of all the good events. The + sum of all the `good` events. + type: string + type: object + type: array + sliSpecification: + description: '(Block List, Max: 1) A map of SLI specifications + to use as part of the SLO. (see below for nested schema) A map + of SLI specifications to use as part of the SLO.' + items: + properties: + timeSlice: + description: '(Block List, Min: 1, Max: 1) The time slice + condition, composed of 3 parts: 1. The timeseries query, + 2. The comparator, and 3. The threshold. (see below for + nested schema) The time slice condition, composed of 3 + parts: 1. The timeseries query, 2. The comparator, and + 3. The threshold.' + items: + properties: + comparator: + description: (String) The comparator used to compare + the SLI value to the threshold. Valid values are + >, >=, <, <=. The comparator used to compare the + SLI value to the threshold. Valid values are `>`, + `>=`, `<`, `<=`. + type: string + query: + description: '(Block List, Max: 1) The metric query + of good / total events (see below for nested schema) + A timeseries query, containing named data-source-specific + queries and a formula involving the named queries.' + items: + properties: + formula: + description: slice SLO. (see below for nested + schema) A list that contains exactly one formula, + as only a single formula may be used to define + a timeseries query for a time-slice SLO. + items: + properties: + formulaExpression: + description: (String) The formula string, + which is an expression involving named + queries. The formula string, which is + an expression involving named queries. + type: string + type: object + type: array + query: + description: '(Block List, Max: 1) The metric + query of good / total events (see below for + nested schema) A list of data-source-specific + queries that are in the formula.' + items: + properties: + metricQuery: + description: '(Block List, Max: 1) A timeseries + formula and functions metrics query. + (see below for nested schema) A timeseries + formula and functions metrics query.' + items: + properties: + dataSource: + description: (String) The data source + for metrics queries. Defaults + to "metrics". The data source + for metrics queries. Defaults + to `"metrics"`. + type: string + name: + description: (String) Name of Datadog + service level objective The name + of the query for use in formulas. + type: string + query: + description: '(Block List, Max: + 1) The metric query of good / + total events (see below for nested + schema) The metrics query definition.' + type: string + type: object + type: array + type: object + type: array + type: object + type: array + threshold: + description: (Number) The threshold value to which + each SLI value will be compared. The threshold value + to which each SLI value will be compared. + type: number + type: object + type: array + type: object + type: array + tags: + description: '(Set of String) A list of tags to associate with + your service level objective. This can help you categorize and + filter service level objectives in the service level objectives + page of the UI. Note: it''s not currently possible to filter + by these tags when querying via the API A list of tags to associate + with your service level objective. This can help you categorize + and filter service level objectives in the service level objectives + page of the UI. Note: it''s not currently possible to filter + by these tags when querying via the API' + items: + type: string + type: array + x-kubernetes-list-type: set + targetThreshold: + description: (Number) The objective's target in (0,100). This + must match the corresponding thresholds of the primary time + frame. The objective's target in `(0,100)`. This must match + the corresponding thresholds of the primary time frame. + type: number + thresholds: + description: '(Block List, Min: 1) A list of thresholds and targets + that define the service level objectives from the provided SLIs. + (see below for nested schema) A list of thresholds and targets + that define the service level objectives from the provided SLIs.' + items: + properties: + target: + description: (Number) The objective's target in (0,100). + The objective's target in `(0,100)`. + type: number + targetDisplay: + description: (String) A string representation of the target + that indicates its precision. It uses trailing zeros to + show significant decimal places (e.g. 98.00). A string + representation of the target that indicates its precision. + It uses trailing zeros to show significant decimal places + (e.g. `98.00`). + type: string + timeframe: + description: (String) The primary time frame for the objective. + The mapping from these types to the types found in the + Datadog Web UI can be found in the Datadog API documentation + page. Valid values are 7d, 30d, 90d, custom. The time + frame for the objective. The mapping from these types + to the types found in the Datadog Web UI can be found + in the Datadog API documentation page. Valid values are + `7d`, `30d`, `90d`, `custom`. + type: string + warning: + description: (Number) The objective's warning value in (0,100). + This must be greater than the target value. The objective's + warning value in `(0,100)`. This must be greater than + the target value. + type: number + warningDisplay: + description: (String) A string representation of the warning + target (see the description of the target_display field + for details). A string representation of the warning target + (see the description of the target_display field for details). + type: string + type: object + type: array + timeframe: + description: (String) The primary time frame for the objective. + The mapping from these types to the types found in the Datadog + Web UI can be found in the Datadog API documentation page. Valid + values are 7d, 30d, 90d, custom. The primary time frame for + the objective. The mapping from these types to the types found + in the Datadog Web UI can be found in the Datadog API documentation + page. Valid values are `7d`, `30d`, `90d`, `custom`. + type: string + type: + description: (String) The type of the service level objective. + The mapping from these types to the types found in the Datadog + Web UI can be found in the Datadog API documentation page. Valid + values are metric, monitor, time_slice. The type of the service + level objective. The mapping from these types to the types found + in the Datadog Web UI can be found in the Datadog API [documentation + page](https://docs.datadoghq.com/api/v1/service-level-objectives/#create-a-slo-object). + Valid values are `metric`, `monitor`, `time_slice`. + type: string + validate: + description: (Boolean) Whether or not to validate the SLO. Whether + or not to validate the SLO. + type: boolean + warningThreshold: + description: (Number) The objective's warning value in (0,100). + This must be greater than the target value and match the corresponding + thresholds of the primary time frame. The objective's warning + value in `(0,100)`. This must be greater than the target value + and match the corresponding thresholds of the primary time frame. + type: number + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_slocorrections.yaml b/package/crds/datadog.upbound.io_slocorrections.yaml new file mode 100644 index 0000000..03f91ed --- /dev/null +++ b/package/crds/datadog.upbound.io_slocorrections.yaml @@ -0,0 +1,441 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: slocorrections.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: SLOCorrection + listKind: SLOCorrectionList + plural: slocorrections + singular: slocorrection + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: SLOCorrection is the Schema for the SLOCorrections API. Resource + for interacting with the slo_correction API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: SLOCorrectionSpec defines the desired state of SLOCorrection + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + category: + description: (String) Category the SLO correction belongs to. + Valid values are Scheduled Maintenance, Outside Business Hours, + Deployment, Other. Category the SLO correction belongs to. Valid + values are `Scheduled Maintenance`, `Outside Business Hours`, + `Deployment`, `Other`. + type: string + description: + description: (String) Description of the correction being made. + Description of the correction being made. + type: string + duration: + description: (Number) Length of time in seconds for a specified + rrule recurring SLO correction Length of time in seconds for + a specified `rrule` recurring SLO correction (required if specifying + `rrule`) + type: number + end: + description: (Number) Ending time of the correction in epoch seconds. + Required for one time corrections, but optional if rrule is + specified Ending time of the correction in epoch seconds. Required + for one time corrections, but optional if `rrule` is specified + type: number + rrule: + description: (String) Recurrence rules as defined in the iCalendar + RFC 5545. Supported rules for SLO corrections are FREQ, INTERVAL, + COUNT and UNTIL. Recurrence rules as defined in the iCalendar + RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, + `COUNT` and `UNTIL`. + type: string + sloId: + description: (String) ID of the SLO that this correction will + be applied to. ID of the SLO that this correction will be applied + to. + type: string + start: + description: (Number) Starting time of the correction in epoch + seconds. Starting time of the correction in epoch seconds. + type: number + timezone: + description: (String) The timezone to display in the UI for the + correction times (defaults to "UTC") The timezone to display + in the UI for the correction times (defaults to "UTC") + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + category: + description: (String) Category the SLO correction belongs to. + Valid values are Scheduled Maintenance, Outside Business Hours, + Deployment, Other. Category the SLO correction belongs to. Valid + values are `Scheduled Maintenance`, `Outside Business Hours`, + `Deployment`, `Other`. + type: string + description: + description: (String) Description of the correction being made. + Description of the correction being made. + type: string + duration: + description: (Number) Length of time in seconds for a specified + rrule recurring SLO correction Length of time in seconds for + a specified `rrule` recurring SLO correction (required if specifying + `rrule`) + type: number + end: + description: (Number) Ending time of the correction in epoch seconds. + Required for one time corrections, but optional if rrule is + specified Ending time of the correction in epoch seconds. Required + for one time corrections, but optional if `rrule` is specified + type: number + rrule: + description: (String) Recurrence rules as defined in the iCalendar + RFC 5545. Supported rules for SLO corrections are FREQ, INTERVAL, + COUNT and UNTIL. Recurrence rules as defined in the iCalendar + RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, + `COUNT` and `UNTIL`. + type: string + sloId: + description: (String) ID of the SLO that this correction will + be applied to. ID of the SLO that this correction will be applied + to. + type: string + start: + description: (Number) Starting time of the correction in epoch + seconds. Starting time of the correction in epoch seconds. + type: number + timezone: + description: (String) The timezone to display in the UI for the + correction times (defaults to "UTC") The timezone to display + in the UI for the correction times (defaults to "UTC") + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.category is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.category) + || (has(self.initProvider) && has(self.initProvider.category))' + - message: spec.forProvider.sloId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.sloId) + || (has(self.initProvider) && has(self.initProvider.sloId))' + - message: spec.forProvider.start is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.start) + || (has(self.initProvider) && has(self.initProvider.start))' + status: + description: SLOCorrectionStatus defines the observed state of SLOCorrection. + properties: + atProvider: + properties: + category: + description: (String) Category the SLO correction belongs to. + Valid values are Scheduled Maintenance, Outside Business Hours, + Deployment, Other. Category the SLO correction belongs to. Valid + values are `Scheduled Maintenance`, `Outside Business Hours`, + `Deployment`, `Other`. + type: string + description: + description: (String) Description of the correction being made. + Description of the correction being made. + type: string + duration: + description: (Number) Length of time in seconds for a specified + rrule recurring SLO correction Length of time in seconds for + a specified `rrule` recurring SLO correction (required if specifying + `rrule`) + type: number + end: + description: (Number) Ending time of the correction in epoch seconds. + Required for one time corrections, but optional if rrule is + specified Ending time of the correction in epoch seconds. Required + for one time corrections, but optional if `rrule` is specified + type: number + id: + description: (String) The ID of this resource. + type: string + rrule: + description: (String) Recurrence rules as defined in the iCalendar + RFC 5545. Supported rules for SLO corrections are FREQ, INTERVAL, + COUNT and UNTIL. Recurrence rules as defined in the iCalendar + RFC 5545. Supported rules for SLO corrections are `FREQ`, `INTERVAL`, + `COUNT` and `UNTIL`. + type: string + sloId: + description: (String) ID of the SLO that this correction will + be applied to. ID of the SLO that this correction will be applied + to. + type: string + start: + description: (Number) Starting time of the correction in epoch + seconds. Starting time of the correction in epoch seconds. + type: number + timezone: + description: (String) The timezone to display in the UI for the + correction times (defaults to "UTC") The timezone to display + in the UI for the correction times (defaults to "UTC") + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_spansmetrics.yaml b/package/crds/datadog.upbound.io_spansmetrics.yaml new file mode 100644 index 0000000..ca28d5b --- /dev/null +++ b/package/crds/datadog.upbound.io_spansmetrics.yaml @@ -0,0 +1,474 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: spansmetrics.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: SpansMetric + listKind: SpansMetricList + plural: spansmetrics + singular: spansmetric + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: SpansMetric is the Schema for the SpansMetrics API. Provides + a Datadog SpansMetric resource. This can be used to create and manage Datadog + spans_metric. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: SpansMetricSpec defines the desired state of SpansMetric + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + compute: + description: (Block, Optional) (see below for nested schema) + properties: + aggregationType: + description: (String) The type of aggregation to use. This + field can't be updated after creation. The type of aggregation + to use. This field can't be updated after creation. + type: string + includePercentiles: + description: (Boolean) Toggle to include or exclude percentile + aggregations for distribution metrics. Only present when + the aggregation_type is distribution. Toggle to include + or exclude percentile aggregations for distribution metrics. + Only present when the `aggregation_type` is `distribution`. + type: boolean + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field can't + be updated after creation. The path to the value the span-based + metric will aggregate on (only used if the aggregation type + is a "distribution"). This field can't be updated after + creation. + type: string + type: object + filter: + description: (Block, Optional) (see below for nested schema) + properties: + query: + description: following the span search syntax. Defaults to + "*". The search query - following the span search syntax. + Defaults to `"*"`. + type: string + type: object + groupBy: + description: (Block Set) (see below for nested schema) + items: + properties: + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the span-based metric will be aggregated over. + type: string + tagName: + description: (String) Eventual name of the tag that gets + created. By default, the path attribute is used as the + tag name. Eventual name of the tag that gets created. + By default, the path attribute is used as the tag name. + type: string + type: object + type: array + name: + description: based metric. This field can't be updated after creation. + The name of the span-based metric. This field can't be updated + after creation. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + compute: + description: (Block, Optional) (see below for nested schema) + properties: + aggregationType: + description: (String) The type of aggregation to use. This + field can't be updated after creation. The type of aggregation + to use. This field can't be updated after creation. + type: string + includePercentiles: + description: (Boolean) Toggle to include or exclude percentile + aggregations for distribution metrics. Only present when + the aggregation_type is distribution. Toggle to include + or exclude percentile aggregations for distribution metrics. + Only present when the `aggregation_type` is `distribution`. + type: boolean + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field can't + be updated after creation. The path to the value the span-based + metric will aggregate on (only used if the aggregation type + is a "distribution"). This field can't be updated after + creation. + type: string + type: object + filter: + description: (Block, Optional) (see below for nested schema) + properties: + query: + description: following the span search syntax. Defaults to + "*". The search query - following the span search syntax. + Defaults to `"*"`. + type: string + type: object + groupBy: + description: (Block Set) (see below for nested schema) + items: + properties: + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the span-based metric will be aggregated over. + type: string + tagName: + description: (String) Eventual name of the tag that gets + created. By default, the path attribute is used as the + tag name. Eventual name of the tag that gets created. + By default, the path attribute is used as the tag name. + type: string + type: object + type: array + name: + description: based metric. This field can't be updated after creation. + The name of the span-based metric. This field can't be updated + after creation. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.compute is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.compute) + || (has(self.initProvider) && has(self.initProvider.compute))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: SpansMetricStatus defines the observed state of SpansMetric. + properties: + atProvider: + properties: + compute: + description: (Block, Optional) (see below for nested schema) + properties: + aggregationType: + description: (String) The type of aggregation to use. This + field can't be updated after creation. The type of aggregation + to use. This field can't be updated after creation. + type: string + includePercentiles: + description: (Boolean) Toggle to include or exclude percentile + aggregations for distribution metrics. Only present when + the aggregation_type is distribution. Toggle to include + or exclude percentile aggregations for distribution metrics. + Only present when the `aggregation_type` is `distribution`. + type: boolean + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field can't + be updated after creation. The path to the value the span-based + metric will aggregate on (only used if the aggregation type + is a "distribution"). This field can't be updated after + creation. + type: string + type: object + filter: + description: (Block, Optional) (see below for nested schema) + properties: + query: + description: following the span search syntax. Defaults to + "*". The search query - following the span search syntax. + Defaults to `"*"`. + type: string + type: object + groupBy: + description: (Block Set) (see below for nested schema) + items: + properties: + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the span-based metric will be aggregated over. + type: string + tagName: + description: (String) Eventual name of the tag that gets + created. By default, the path attribute is used as the + tag name. Eventual name of the tag that gets created. + By default, the path attribute is used as the tag name. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + name: + description: based metric. This field can't be updated after creation. + The name of the span-based metric. This field can't be updated + after creation. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/template.upbound.io_storeconfigs.yaml b/package/crds/datadog.upbound.io_storeconfigs.yaml similarity index 98% rename from package/crds/template.upbound.io_storeconfigs.yaml rename to package/crds/datadog.upbound.io_storeconfigs.yaml index 4300dad..bbadfb6 100644 --- a/package/crds/template.upbound.io_storeconfigs.yaml +++ b/package/crds/datadog.upbound.io_storeconfigs.yaml @@ -4,14 +4,14 @@ kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.13.0 - name: storeconfigs.template.upbound.io + name: storeconfigs.datadog.upbound.io spec: - group: template.upbound.io + group: datadog.upbound.io names: categories: - crossplane - store - - template + - datadog kind: StoreConfig listKind: StoreConfigList plural: storeconfigs @@ -31,7 +31,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: A StoreConfig configures how template controller should store + description: A StoreConfig configures how datadog controller should store connection details. properties: apiVersion: diff --git a/package/crds/datadog.upbound.io_teamlinks.yaml b/package/crds/datadog.upbound.io_teamlinks.yaml new file mode 100644 index 0000000..6dd6767 --- /dev/null +++ b/package/crds/datadog.upbound.io_teamlinks.yaml @@ -0,0 +1,354 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: teamlinks.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: TeamLink + listKind: TeamLinkList + plural: teamlinks + singular: teamlink + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: TeamLink is the Schema for the TeamLinks API. Provides a Datadog + TeamLink resource. This can be used to create and manage Datadog team_link. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TeamLinkSpec defines the desired state of TeamLink + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + label: + description: (String) The link's label. The link's label. + type: string + position: + description: (Number) The link's position, used to sort links + for the team. The link's position, used to sort links for the + team. + type: number + teamId: + description: (String) ID of the team the link is associated with. + ID of the team the link is associated with. + type: string + url: + description: (String) The URL for the link. The URL for the link. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + label: + description: (String) The link's label. The link's label. + type: string + position: + description: (Number) The link's position, used to sort links + for the team. The link's position, used to sort links for the + team. + type: number + teamId: + description: (String) ID of the team the link is associated with. + ID of the team the link is associated with. + type: string + url: + description: (String) The URL for the link. The URL for the link. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.label is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.label) + || (has(self.initProvider) && has(self.initProvider.label))' + - message: spec.forProvider.teamId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.teamId) + || (has(self.initProvider) && has(self.initProvider.teamId))' + - message: spec.forProvider.url is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.url) + || (has(self.initProvider) && has(self.initProvider.url))' + status: + description: TeamLinkStatus defines the observed state of TeamLink. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + label: + description: (String) The link's label. The link's label. + type: string + position: + description: (Number) The link's position, used to sort links + for the team. The link's position, used to sort links for the + team. + type: number + teamId: + description: (String) ID of the team the link is associated with. + ID of the team the link is associated with. + type: string + url: + description: (String) The URL for the link. The URL for the link. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_teammemberships.yaml b/package/crds/datadog.upbound.io_teammemberships.yaml new file mode 100644 index 0000000..fbf4ac8 --- /dev/null +++ b/package/crds/datadog.upbound.io_teammemberships.yaml @@ -0,0 +1,342 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: teammemberships.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: TeamMembership + listKind: TeamMembershipList + plural: teammemberships + singular: teammembership + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: TeamMembership is the Schema for the TeamMemberships API. Provides + a Datadog TeamMembership resource. This can be used to create and manage + Datadog team_membership. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TeamMembershipSpec defines the desired state of TeamMembership + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + role: + description: (String) The user's role within the team. Valid values + are admin. The user's role within the team. Valid values are + `admin`. + type: string + teamId: + description: (String) ID of the team the team membership is associated + with. ID of the team the team membership is associated with. + type: string + userId: + description: (String) The ID of the user. The ID of the user. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + role: + description: (String) The user's role within the team. Valid values + are admin. The user's role within the team. Valid values are + `admin`. + type: string + teamId: + description: (String) ID of the team the team membership is associated + with. ID of the team the team membership is associated with. + type: string + userId: + description: (String) The ID of the user. The ID of the user. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.teamId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.teamId) + || (has(self.initProvider) && has(self.initProvider.teamId))' + - message: spec.forProvider.userId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.userId) + || (has(self.initProvider) && has(self.initProvider.userId))' + status: + description: TeamMembershipStatus defines the observed state of TeamMembership. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + role: + description: (String) The user's role within the team. Valid values + are admin. The user's role within the team. Valid values are + `admin`. + type: string + teamId: + description: (String) ID of the team the team membership is associated + with. ID of the team the team membership is associated with. + type: string + userId: + description: (String) The ID of the user. The ID of the user. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_teampermissionsettings.yaml b/package/crds/datadog.upbound.io_teampermissionsettings.yaml new file mode 100644 index 0000000..903f2a8 --- /dev/null +++ b/package/crds/datadog.upbound.io_teampermissionsettings.yaml @@ -0,0 +1,359 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: teampermissionsettings.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: TeamPermissionSetting + listKind: TeamPermissionSettingList + plural: teampermissionsettings + singular: teampermissionsetting + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: TeamPermissionSetting is the Schema for the TeamPermissionSettings + API. Provides a Datadog TeamPermissionSetting resource. This can be used + to manage Datadog teampermissionsetting. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TeamPermissionSettingSpec defines the desired state of TeamPermissionSetting + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + action: + description: (String) The identifier for the action. Valid values + are manage_membership, edit. The identifier for the action. + Valid values are `manage_membership`, `edit`. + type: string + teamId: + description: (String) ID of the team the team permission setting + is associated with. ID of the team the team permission setting + is associated with. + type: string + value: + description: (String) The action value. Valid values are admins, + members, organization, user_access_manage, teams_manage. The + action value. Valid values are `admins`, `members`, `organization`, + `user_access_manage`, `teams_manage`. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + action: + description: (String) The identifier for the action. Valid values + are manage_membership, edit. The identifier for the action. + Valid values are `manage_membership`, `edit`. + type: string + teamId: + description: (String) ID of the team the team permission setting + is associated with. ID of the team the team permission setting + is associated with. + type: string + value: + description: (String) The action value. Valid values are admins, + members, organization, user_access_manage, teams_manage. The + action value. Valid values are `admins`, `members`, `organization`, + `user_access_manage`, `teams_manage`. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.action is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.action) + || (has(self.initProvider) && has(self.initProvider.action))' + - message: spec.forProvider.teamId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.teamId) + || (has(self.initProvider) && has(self.initProvider.teamId))' + - message: spec.forProvider.value is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.value) + || (has(self.initProvider) && has(self.initProvider.value))' + status: + description: TeamPermissionSettingStatus defines the observed state of + TeamPermissionSetting. + properties: + atProvider: + properties: + action: + description: (String) The identifier for the action. Valid values + are manage_membership, edit. The identifier for the action. + Valid values are `manage_membership`, `edit`. + type: string + id: + description: (String) The ID of this resource. + type: string + teamId: + description: (String) ID of the team the team permission setting + is associated with. ID of the team the team permission setting + is associated with. + type: string + value: + description: (String) The action value. Valid values are admins, + members, organization, user_access_manage, teams_manage. The + action value. Valid values are `admins`, `members`, `organization`, + `user_access_manage`, `teams_manage`. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_teams.yaml b/package/crds/datadog.upbound.io_teams.yaml new file mode 100644 index 0000000..31951ce --- /dev/null +++ b/package/crds/datadog.upbound.io_teams.yaml @@ -0,0 +1,355 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: teams.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Team + listKind: TeamList + plural: teams + singular: team + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Team is the Schema for the Teams API. Provides a Datadog Team + resource. This can be used to create and manage Datadog team. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TeamSpec defines the desired state of Team + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: form markdown description/content for the team's + homepage. Free-form markdown description/content for the team's + homepage. + type: string + handle: + description: (String) The team's identifier The team's identifier + type: string + name: + description: (String) The name of the team. The name of the team. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: form markdown description/content for the team's + homepage. Free-form markdown description/content for the team's + homepage. + type: string + handle: + description: (String) The team's identifier The team's identifier + type: string + name: + description: (String) The name of the team. The name of the team. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.description is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.description) + || (has(self.initProvider) && has(self.initProvider.description))' + - message: spec.forProvider.handle is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.handle) + || (has(self.initProvider) && has(self.initProvider.handle))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: TeamStatus defines the observed state of Team. + properties: + atProvider: + properties: + description: + description: form markdown description/content for the team's + homepage. Free-form markdown description/content for the team's + homepage. + type: string + handle: + description: (String) The team's identifier The team's identifier + type: string + id: + description: (String) The ID of this resource. + type: string + linkCount: + description: (Number) The number of links belonging to the team. + The number of links belonging to the team. + type: number + name: + description: (String) The name of the team. The name of the team. + type: string + summary: + description: (String) A brief summary of the team, derived from + the description. A brief summary of the team, derived from the + `description`. + type: string + userCount: + description: (Number) The number of users belonging to the team. + The number of users belonging to the team. + type: number + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_users.yaml b/package/crds/datadog.upbound.io_users.yaml new file mode 100644 index 0000000..aa1447b --- /dev/null +++ b/package/crds/datadog.upbound.io_users.yaml @@ -0,0 +1,379 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: users.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: User + listKind: UserList + plural: users + singular: user + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: User is the Schema for the Users API. Provides a Datadog user + resource. This can be used to create and manage Datadog users. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: UserSpec defines the desired state of User + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + disabled: + description: (Boolean) Whether the user is disabled. Defaults + to false. Whether the user is disabled. Defaults to `false`. + type: boolean + email: + description: (String) Email address for user. Email address for + user. + type: string + name: + description: (String) Name for user. Name for user. + type: string + roles: + description: (Set of String) A list a role IDs to assign to the + user. A list a role IDs to assign to the user. + items: + type: string + type: array + x-kubernetes-list-type: set + sendUserInvitation: + description: (Boolean) Whether an invitation email should be sent + when the user is created. Defaults to true. Whether an invitation + email should be sent when the user is created. Defaults to `true`. + type: boolean + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + disabled: + description: (Boolean) Whether the user is disabled. Defaults + to false. Whether the user is disabled. Defaults to `false`. + type: boolean + email: + description: (String) Email address for user. Email address for + user. + type: string + name: + description: (String) Name for user. Name for user. + type: string + roles: + description: (Set of String) A list a role IDs to assign to the + user. A list a role IDs to assign to the user. + items: + type: string + type: array + x-kubernetes-list-type: set + sendUserInvitation: + description: (Boolean) Whether an invitation email should be sent + when the user is created. Defaults to true. Whether an invitation + email should be sent when the user is created. Defaults to `true`. + type: boolean + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.email is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.email) + || (has(self.initProvider) && has(self.initProvider.email))' + status: + description: UserStatus defines the observed state of User. + properties: + atProvider: + properties: + disabled: + description: (Boolean) Whether the user is disabled. Defaults + to false. Whether the user is disabled. Defaults to `false`. + type: boolean + email: + description: (String) Email address for user. Email address for + user. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Name for user. Name for user. + type: string + roles: + description: (Set of String) A list a role IDs to assign to the + user. A list a role IDs to assign to the user. + items: + type: string + type: array + x-kubernetes-list-type: set + sendUserInvitation: + description: (Boolean) Whether an invitation email should be sent + when the user is created. Defaults to true. Whether an invitation + email should be sent when the user is created. Defaults to `true`. + type: boolean + userInvitationId: + description: (String) The ID of the user invitation that was sent + when creating the user. The ID of the user invitation that was + sent when creating the user. + type: string + verified: + description: (Boolean) Returns true if the user is verified. Returns + `true` if the user is verified. + type: boolean + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_webhookcustomvariables.yaml b/package/crds/datadog.upbound.io_webhookcustomvariables.yaml new file mode 100644 index 0000000..294ede7 --- /dev/null +++ b/package/crds/datadog.upbound.io_webhookcustomvariables.yaml @@ -0,0 +1,355 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: webhookcustomvariables.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: WebhookCustomVariable + listKind: WebhookCustomVariableList + plural: webhookcustomvariables + singular: webhookcustomvariable + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: WebhookCustomVariable is the Schema for the WebhookCustomVariables + API. Provides a Datadog webhooks custom variable resource. This can be used + to create and manage Datadog webhooks custom variables. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: WebhookCustomVariableSpec defines the desired state of WebhookCustomVariable + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + isSecret: + description: (Boolean) Whether the custom variable is secret or + not. Whether the custom variable is secret or not. + type: boolean + name: + description: (String) The name of the variable. It corresponds + with . The name of the variable. It corresponds + with ``. + type: string + valueSecretRef: + description: (String, Sensitive) The value of the custom variable. + The value of the custom variable. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + isSecret: + description: (Boolean) Whether the custom variable is secret or + not. Whether the custom variable is secret or not. + type: boolean + name: + description: (String) The name of the variable. It corresponds + with . The name of the variable. It corresponds + with ``. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.isSecret is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.isSecret) + || (has(self.initProvider) && has(self.initProvider.isSecret))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.valueSecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.valueSecretRef)' + status: + description: WebhookCustomVariableStatus defines the observed state of + WebhookCustomVariable. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + isSecret: + description: (Boolean) Whether the custom variable is secret or + not. Whether the custom variable is secret or not. + type: boolean + name: + description: (String) The name of the variable. It corresponds + with . The name of the variable. It corresponds + with ``. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_webhooks.yaml b/package/crds/datadog.upbound.io_webhooks.yaml new file mode 100644 index 0000000..f42c20d --- /dev/null +++ b/package/crds/datadog.upbound.io_webhooks.yaml @@ -0,0 +1,365 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: webhooks.datadog.upbound.io +spec: + group: datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Webhook + listKind: WebhookList + plural: webhooks + singular: webhook + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Webhook is the Schema for the Webhooks API. Provides a Datadog + webhook resource. This can be used to create and manage Datadog webhooks. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: WebhookSpec defines the desired state of Webhook + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + customHeaders: + description: (String) The headers attached to the webhook. The + headers attached to the webhook. + type: string + encodeAs: + description: (String) Encoding type. Valid values are json, form. + Encoding type. Valid values are `json`, `form`. + type: string + name: + description: (String) The name of the webhook. It corresponds + with . The name of the webhook. It corresponds + with ``. + type: string + payload: + description: (String) The payload of the webhook. The payload + of the webhook. + type: string + url: + description: (String) The URL of the webhook. The URL of the webhook. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + customHeaders: + description: (String) The headers attached to the webhook. The + headers attached to the webhook. + type: string + encodeAs: + description: (String) Encoding type. Valid values are json, form. + Encoding type. Valid values are `json`, `form`. + type: string + name: + description: (String) The name of the webhook. It corresponds + with . The name of the webhook. It corresponds + with ``. + type: string + payload: + description: (String) The payload of the webhook. The payload + of the webhook. + type: string + url: + description: (String) The URL of the webhook. The URL of the webhook. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.url is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.url) + || (has(self.initProvider) && has(self.initProvider.url))' + status: + description: WebhookStatus defines the observed state of Webhook. + properties: + atProvider: + properties: + customHeaders: + description: (String) The headers attached to the webhook. The + headers attached to the webhook. + type: string + encodeAs: + description: (String) Encoding type. Valid values are json, form. + Encoding type. Valid values are `json`, `form`. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name of the webhook. It corresponds + with . The name of the webhook. It corresponds + with ``. + type: string + payload: + description: (String) The payload of the webhook. The payload + of the webhook. + type: string + url: + description: (String) The URL of the webhook. The URL of the webhook. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_awses.yaml b/package/crds/integration.datadog.upbound.io_awses.yaml new file mode 100644 index 0000000..99590d3 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_awses.yaml @@ -0,0 +1,530 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: awses.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AWS + listKind: AWSList + plural: awses + singular: aws + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: AWS is the Schema for the AWSs API. Provides a Datadog - Amazon + Web Services integration resource. This can be used to create and manage + Datadog - Amazon Web Services integration. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AWSSpec defines the desired state of AWS + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accessKeyId: + description: (String) Your AWS access key ID. Only required if + your AWS account is a GovCloud or China account. Your AWS access + key ID. Only required if your AWS account is a GovCloud or China + account. + type: string + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + accountSpecificNamespaceRules: + additionalProperties: + type: boolean + description: (Map of Boolean) Enables or disables metric collection + for specific AWS namespaces for this AWS account only. A list + of namespaces can be found at the available namespace rules + API endpoint. Enables or disables metric collection for specific + AWS namespaces for this AWS account only. A list of namespaces + can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules). + type: object + x-kubernetes-map-type: granular + cspmResourceCollectionEnabled: + description: (String) Whether Datadog collects cloud security + posture management resources from your AWS account. This includes + additional resources not covered under the general resource_collection. + Whether Datadog collects cloud security posture management resources + from your AWS account. This includes additional resources not + covered under the general resource_collection. + type: string + excludedRegions: + description: (Set of String) An array of AWS regions to exclude + from metrics collection. An array of AWS regions to exclude + from metrics collection. + items: + type: string + type: array + x-kubernetes-list-type: set + filterTags: + description: type:c1.*,!region:us-east-1. Array of EC2 tags (in + the form `key:value`) defines a filter that Datadog uses when + collecting metrics from EC2. Wildcards, such as `?` (for single + characters) and `*` (for multiple characters) can also be used. + Only hosts that match one of the defined tags will be imported + into Datadog. The rest will be ignored. Host matching a given + tag can also be excluded by adding `!` before the tag. e.x. + `env:production,instance-type:c1.*,!region:us-east-1`. + items: + type: string + type: array + hostTags: + description: (List of String) Array of tags (in the form key:value) + to add to all hosts and metrics reporting through this integration. + Array of tags (in the form `key:value`) to add to all hosts + and metrics reporting through this integration. + items: + type: string + type: array + metricsCollectionEnabled: + description: (String) Whether Datadog collects metrics for this + AWS account. Whether Datadog collects metrics for this AWS account. + type: string + resourceCollectionEnabled: + description: (String) Whether Datadog collects a standard set + of resources from your AWS account. Whether Datadog collects + a standard set of resources from your AWS account. + type: string + roleName: + description: (String) Your Datadog role delegation name. Your + Datadog role delegation name. + type: string + secretAccessKeySecretRef: + description: (String, Sensitive) Your AWS secret access key. Only + required if your AWS account is a GovCloud or China account. + Your AWS secret access key. Only required if your AWS account + is a GovCloud or China account. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accessKeyId: + description: (String) Your AWS access key ID. Only required if + your AWS account is a GovCloud or China account. Your AWS access + key ID. Only required if your AWS account is a GovCloud or China + account. + type: string + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + accountSpecificNamespaceRules: + additionalProperties: + type: boolean + description: (Map of Boolean) Enables or disables metric collection + for specific AWS namespaces for this AWS account only. A list + of namespaces can be found at the available namespace rules + API endpoint. Enables or disables metric collection for specific + AWS namespaces for this AWS account only. A list of namespaces + can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules). + type: object + x-kubernetes-map-type: granular + cspmResourceCollectionEnabled: + description: (String) Whether Datadog collects cloud security + posture management resources from your AWS account. This includes + additional resources not covered under the general resource_collection. + Whether Datadog collects cloud security posture management resources + from your AWS account. This includes additional resources not + covered under the general resource_collection. + type: string + excludedRegions: + description: (Set of String) An array of AWS regions to exclude + from metrics collection. An array of AWS regions to exclude + from metrics collection. + items: + type: string + type: array + x-kubernetes-list-type: set + filterTags: + description: type:c1.*,!region:us-east-1. Array of EC2 tags (in + the form `key:value`) defines a filter that Datadog uses when + collecting metrics from EC2. Wildcards, such as `?` (for single + characters) and `*` (for multiple characters) can also be used. + Only hosts that match one of the defined tags will be imported + into Datadog. The rest will be ignored. Host matching a given + tag can also be excluded by adding `!` before the tag. e.x. + `env:production,instance-type:c1.*,!region:us-east-1`. + items: + type: string + type: array + hostTags: + description: (List of String) Array of tags (in the form key:value) + to add to all hosts and metrics reporting through this integration. + Array of tags (in the form `key:value`) to add to all hosts + and metrics reporting through this integration. + items: + type: string + type: array + metricsCollectionEnabled: + description: (String) Whether Datadog collects metrics for this + AWS account. Whether Datadog collects metrics for this AWS account. + type: string + resourceCollectionEnabled: + description: (String) Whether Datadog collects a standard set + of resources from your AWS account. Whether Datadog collects + a standard set of resources from your AWS account. + type: string + roleName: + description: (String) Your Datadog role delegation name. Your + Datadog role delegation name. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: AWSStatus defines the observed state of AWS. + properties: + atProvider: + properties: + accessKeyId: + description: (String) Your AWS access key ID. Only required if + your AWS account is a GovCloud or China account. Your AWS access + key ID. Only required if your AWS account is a GovCloud or China + account. + type: string + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + accountSpecificNamespaceRules: + additionalProperties: + type: boolean + description: (Map of Boolean) Enables or disables metric collection + for specific AWS namespaces for this AWS account only. A list + of namespaces can be found at the available namespace rules + API endpoint. Enables or disables metric collection for specific + AWS namespaces for this AWS account only. A list of namespaces + can be found at the [available namespace rules API endpoint](https://docs.datadoghq.com/api/v1/aws-integration/#list-namespace-rules). + type: object + x-kubernetes-map-type: granular + cspmResourceCollectionEnabled: + description: (String) Whether Datadog collects cloud security + posture management resources from your AWS account. This includes + additional resources not covered under the general resource_collection. + Whether Datadog collects cloud security posture management resources + from your AWS account. This includes additional resources not + covered under the general resource_collection. + type: string + excludedRegions: + description: (Set of String) An array of AWS regions to exclude + from metrics collection. An array of AWS regions to exclude + from metrics collection. + items: + type: string + type: array + x-kubernetes-list-type: set + externalId: + description: (String) AWS External ID. AWS External ID. + type: string + filterTags: + description: type:c1.*,!region:us-east-1. Array of EC2 tags (in + the form `key:value`) defines a filter that Datadog uses when + collecting metrics from EC2. Wildcards, such as `?` (for single + characters) and `*` (for multiple characters) can also be used. + Only hosts that match one of the defined tags will be imported + into Datadog. The rest will be ignored. Host matching a given + tag can also be excluded by adding `!` before the tag. e.x. + `env:production,instance-type:c1.*,!region:us-east-1`. + items: + type: string + type: array + hostTags: + description: (List of String) Array of tags (in the form key:value) + to add to all hosts and metrics reporting through this integration. + Array of tags (in the form `key:value`) to add to all hosts + and metrics reporting through this integration. + items: + type: string + type: array + id: + description: (String) The ID of this resource. + type: string + metricsCollectionEnabled: + description: (String) Whether Datadog collects metrics for this + AWS account. Whether Datadog collects metrics for this AWS account. + type: string + resourceCollectionEnabled: + description: (String) Whether Datadog collects a standard set + of resources from your AWS account. Whether Datadog collects + a standard set of resources from your AWS account. + type: string + roleName: + description: (String) Your Datadog role delegation name. Your + Datadog role delegation name. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_awseventbridges.yaml b/package/crds/integration.datadog.upbound.io_awseventbridges.yaml new file mode 100644 index 0000000..1583de6 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_awseventbridges.yaml @@ -0,0 +1,374 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: awseventbridges.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AWSEventBridge + listKind: AWSEventBridgeList + plural: awseventbridges + singular: awseventbridge + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: AWSEventBridge is the Schema for the AWSEventBridges API. Provides + a Datadog - Amazon Web Services integration EventBridge resource. This can + be used to create and manage Event Sources for each Datadog integrated AWS + account. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AWSEventBridgeSpec defines the desired state of AWSEventBridge + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + createEventBus: + description: (Boolean) True if Datadog should create the event + bus in addition to the event source. Requires the events:CreateEventBus + permission. Defaults to true. True if Datadog should create + the event bus in addition to the event source. Requires the + `events:CreateEventBus` permission. Defaults to `true`. + type: boolean + eventGeneratorName: + description: (String) The given part of the event source name, + which is then combined with an assigned suffix to form the full + name. The given part of the event source name, which is then + combined with an assigned suffix to form the full name. + type: string + region: + description: (String) The event source's AWS region. The event + source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + createEventBus: + description: (Boolean) True if Datadog should create the event + bus in addition to the event source. Requires the events:CreateEventBus + permission. Defaults to true. True if Datadog should create + the event bus in addition to the event source. Requires the + `events:CreateEventBus` permission. Defaults to `true`. + type: boolean + eventGeneratorName: + description: (String) The given part of the event source name, + which is then combined with an assigned suffix to form the full + name. The given part of the event source name, which is then + combined with an assigned suffix to form the full name. + type: string + region: + description: (String) The event source's AWS region. The event + source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.accountId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.accountId) + || (has(self.initProvider) && has(self.initProvider.accountId))' + - message: spec.forProvider.eventGeneratorName is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.eventGeneratorName) + || (has(self.initProvider) && has(self.initProvider.eventGeneratorName))' + - message: spec.forProvider.region is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.region) + || (has(self.initProvider) && has(self.initProvider.region))' + status: + description: AWSEventBridgeStatus defines the observed state of AWSEventBridge. + properties: + atProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + createEventBus: + description: (Boolean) True if Datadog should create the event + bus in addition to the event source. Requires the events:CreateEventBus + permission. Defaults to true. True if Datadog should create + the event bus in addition to the event source. Requires the + `events:CreateEventBus` permission. Defaults to `true`. + type: boolean + eventGeneratorName: + description: (String) The given part of the event source name, + which is then combined with an assigned suffix to form the full + name. The given part of the event source name, which is then + combined with an assigned suffix to form the full name. + type: string + id: + description: (String) The ID of this resource. + type: string + region: + description: (String) The event source's AWS region. The event + source's [AWS region](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_awslambdaarns.yaml b/package/crds/integration.datadog.upbound.io_awslambdaarns.yaml new file mode 100644 index 0000000..0425b65 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_awslambdaarns.yaml @@ -0,0 +1,332 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: awslambdaarns.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AWSLambdaARN + listKind: AWSLambdaARNList + plural: awslambdaarns + singular: awslambdaarn + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: AWSLambdaARN is the Schema for the AWSLambdaARNs API. Provides + a Datadog - Amazon Web Services integration Lambda ARN resource. This can + be used to create and manage the log collection Lambdas for an account. + Update operations are currently not supported with datadog API so any change + forces a new resource. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AWSLambdaARNSpec defines the desired state of AWSLambdaARN + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + lambdaArn: + description: (String) The ARN of the Datadog forwarder Lambda. + The ARN of the Datadog forwarder Lambda. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + lambdaArn: + description: (String) The ARN of the Datadog forwarder Lambda. + The ARN of the Datadog forwarder Lambda. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.accountId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.accountId) + || (has(self.initProvider) && has(self.initProvider.accountId))' + - message: spec.forProvider.lambdaArn is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.lambdaArn) + || (has(self.initProvider) && has(self.initProvider.lambdaArn))' + status: + description: AWSLambdaARNStatus defines the observed state of AWSLambdaARN. + properties: + atProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + id: + description: (String) The ID of this resource. + type: string + lambdaArn: + description: (String) The ARN of the Datadog forwarder Lambda. + The ARN of the Datadog forwarder Lambda. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_awslogcollections.yaml b/package/crds/integration.datadog.upbound.io_awslogcollections.yaml new file mode 100644 index 0000000..95af835 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_awslogcollections.yaml @@ -0,0 +1,346 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: awslogcollections.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AWSLogCollection + listKind: AWSLogCollectionList + plural: awslogcollections + singular: awslogcollection + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: AWSLogCollection is the Schema for the AWSLogCollections API. + Provides a Datadog - Amazon Web Services integration log collection resource. + This can be used to manage which AWS services logs are collected from for + an account. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AWSLogCollectionSpec defines the desired state of AWSLogCollection + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + services: + description: (List of String) A list of services to collect logs + from. See the api docs for more details on which services are + supported. A list of services to collect logs from. See the + [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) + for more details on which services are supported. + items: + type: string + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + services: + description: (List of String) A list of services to collect logs + from. See the api docs for more details on which services are + supported. A list of services to collect logs from. See the + [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) + for more details on which services are supported. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.accountId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.accountId) + || (has(self.initProvider) && has(self.initProvider.accountId))' + - message: spec.forProvider.services is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.services) + || (has(self.initProvider) && has(self.initProvider.services))' + status: + description: AWSLogCollectionStatus defines the observed state of AWSLogCollection. + properties: + atProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + id: + description: (String) The ID of this resource. + type: string + services: + description: (List of String) A list of services to collect logs + from. See the api docs for more details on which services are + supported. A list of services to collect logs from. See the + [api docs](https://docs.datadoghq.com/api/v1/aws-logs-integration/#get-list-of-aws-log-ready-services) + for more details on which services are supported. + items: + type: string + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_awstagfilters.yaml b/package/crds/integration.datadog.upbound.io_awstagfilters.yaml new file mode 100644 index 0000000..9bd42b1 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_awstagfilters.yaml @@ -0,0 +1,352 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: awstagfilters.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AWSTagFilter + listKind: AWSTagFilterList + plural: awstagfilters + singular: awstagfilter + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: AWSTagFilter is the Schema for the AWSTagFilters API. Provides + a Datadog AWS tag filter resource. This can be used to create and manage + Datadog AWS tag filters. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AWSTagFilterSpec defines the desired state of AWSTagFilter + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + namespace: + description: (String) The namespace associated with the tag filter + entry. Valid values are elb, application_elb, sqs, rds, custom, + network_elb, lambda. The namespace associated with the tag filter + entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, + `custom`, `network_elb`, `lambda`. + type: string + tagFilterStr: + description: (String) The tag filter string. The tag filter string. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + namespace: + description: (String) The namespace associated with the tag filter + entry. Valid values are elb, application_elb, sqs, rds, custom, + network_elb, lambda. The namespace associated with the tag filter + entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, + `custom`, `network_elb`, `lambda`. + type: string + tagFilterStr: + description: (String) The tag filter string. The tag filter string. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.accountId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.accountId) + || (has(self.initProvider) && has(self.initProvider.accountId))' + - message: spec.forProvider.namespace is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.__namespace__) + || (has(self.initProvider) && has(self.initProvider.__namespace__))' + - message: spec.forProvider.tagFilterStr is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.tagFilterStr) + || (has(self.initProvider) && has(self.initProvider.tagFilterStr))' + status: + description: AWSTagFilterStatus defines the observed state of AWSTagFilter. + properties: + atProvider: + properties: + accountId: + description: (String) Your AWS Account ID without dashes. Your + AWS Account ID without dashes. + type: string + id: + description: (String) The ID of this resource. + type: string + namespace: + description: (String) The namespace associated with the tag filter + entry. Valid values are elb, application_elb, sqs, rds, custom, + network_elb, lambda. The namespace associated with the tag filter + entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, + `custom`, `network_elb`, `lambda`. + type: string + tagFilterStr: + description: (String) The tag filter string. The tag filter string. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_azures.yaml b/package/crds/integration.datadog.upbound.io_azures.yaml new file mode 100644 index 0000000..76f404c --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_azures.yaml @@ -0,0 +1,550 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: azures.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Azure + listKind: AzureList + plural: azures + singular: azure + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Azure is the Schema for the Azures API. Provides a Datadog - + Microsoft Azure integration resource. This can be used to create and manage + the integrations. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AzureSpec defines the desired state of Azure + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + appServicePlanFilters: + description: separated list of tags (in the form key:value,key:value) + defines a filter that Datadog uses when collecting metrics from + Azure App Service Plans. Only App Service Plans that match one + of the defined tags are imported into Datadog. The rest, including + the apps and functions running on them, are ignored. This also + filters the metrics for any App or Function running on the App + Service Plan(s). Defaults to "". This comma-separated list of + tags (in the form `key:value,key:value`) defines a filter that + Datadog uses when collecting metrics from Azure App Service + Plans. Only App Service Plans that match one of the defined + tags are imported into Datadog. The rest, including the apps + and functions running on them, are ignored. This also filters + the metrics for any App or Function running on the App Service + Plan(s). Defaults to `""`. + type: string + automute: + description: (Boolean) Silence monitors for expected Azure VM + shutdowns. Defaults to false. Silence monitors for expected + Azure VM shutdowns. Defaults to `false`. + type: boolean + clientId: + description: (String) Your Azure web application ID. Your Azure + web application ID. + type: string + clientSecretSecretRef: + description: (String, Sensitive) Your Azure web application secret + key. (Required for Initial Creation) Your Azure web application + secret key. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + containerAppFilters: + description: separated list of tags (in the form key:value,key:value) + defines a filter that Datadog uses when collecting metrics from + Azure Container Apps. Only Container Apps that match one of + the defined tags are imported into Datadog. Defaults to "". + This comma-separated list of tags (in the form `key:value,key:value`) + defines a filter that Datadog uses when collecting metrics from + Azure Container Apps. Only Container Apps that match one of + the defined tags are imported into Datadog. Defaults to `""`. + type: string + cspmEnabled: + description: '(Boolean) When enabled, Datadog’s Cloud Security + Management product scans resource configurations monitored by + this app registration. Note: This requires resource_collection_enabled + to be set to true. Defaults to false. When enabled, Datadog’s + Cloud Security Management product scans resource configurations + monitored by this app registration. Note: This requires `resource_collection_enabled` + to be set to true. Defaults to `false`.' + type: boolean + customMetricsEnabled: + description: (Boolean) Enable custom metrics for your organization. + Defaults to false. Enable custom metrics for your organization. + Defaults to `false`. + type: boolean + hostFilters: + description: (String) String of host tag(s) (in the form key:value,key:value) + defines a filter that Datadog will use when collecting metrics + from Azure. Limit the Azure instances that are pulled into Datadog + by using tags. Only hosts that match one of the defined tags + are imported into Datadog. e.x. env:production,deploymentgroup:red + Defaults to "". String of host tag(s) (in the form `key:value,key:value`) + defines a filter that Datadog will use when collecting metrics + from Azure. Limit the Azure instances that are pulled into Datadog + by using tags. Only hosts that match one of the defined tags + are imported into Datadog. e.x. `env:production,deploymentgroup:red` + Defaults to `""`. + type: string + resourceCollectionEnabled: + description: (Boolean) When enabled, Datadog collects metadata + and configuration info from cloud resources (such as compute + instances, databases, and load balancers) monitored by this + app registration. When enabled, Datadog collects metadata and + configuration info from cloud resources (such as compute instances, + databases, and load balancers) monitored by this app registration. + type: boolean + tenantName: + description: (String) Your Azure Active Directory ID. Your Azure + Active Directory ID. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + appServicePlanFilters: + description: separated list of tags (in the form key:value,key:value) + defines a filter that Datadog uses when collecting metrics from + Azure App Service Plans. Only App Service Plans that match one + of the defined tags are imported into Datadog. The rest, including + the apps and functions running on them, are ignored. This also + filters the metrics for any App or Function running on the App + Service Plan(s). Defaults to "". This comma-separated list of + tags (in the form `key:value,key:value`) defines a filter that + Datadog uses when collecting metrics from Azure App Service + Plans. Only App Service Plans that match one of the defined + tags are imported into Datadog. The rest, including the apps + and functions running on them, are ignored. This also filters + the metrics for any App or Function running on the App Service + Plan(s). Defaults to `""`. + type: string + automute: + description: (Boolean) Silence monitors for expected Azure VM + shutdowns. Defaults to false. Silence monitors for expected + Azure VM shutdowns. Defaults to `false`. + type: boolean + clientId: + description: (String) Your Azure web application ID. Your Azure + web application ID. + type: string + containerAppFilters: + description: separated list of tags (in the form key:value,key:value) + defines a filter that Datadog uses when collecting metrics from + Azure Container Apps. Only Container Apps that match one of + the defined tags are imported into Datadog. Defaults to "". + This comma-separated list of tags (in the form `key:value,key:value`) + defines a filter that Datadog uses when collecting metrics from + Azure Container Apps. Only Container Apps that match one of + the defined tags are imported into Datadog. Defaults to `""`. + type: string + cspmEnabled: + description: '(Boolean) When enabled, Datadog’s Cloud Security + Management product scans resource configurations monitored by + this app registration. Note: This requires resource_collection_enabled + to be set to true. Defaults to false. When enabled, Datadog’s + Cloud Security Management product scans resource configurations + monitored by this app registration. Note: This requires `resource_collection_enabled` + to be set to true. Defaults to `false`.' + type: boolean + customMetricsEnabled: + description: (Boolean) Enable custom metrics for your organization. + Defaults to false. Enable custom metrics for your organization. + Defaults to `false`. + type: boolean + hostFilters: + description: (String) String of host tag(s) (in the form key:value,key:value) + defines a filter that Datadog will use when collecting metrics + from Azure. Limit the Azure instances that are pulled into Datadog + by using tags. Only hosts that match one of the defined tags + are imported into Datadog. e.x. env:production,deploymentgroup:red + Defaults to "". String of host tag(s) (in the form `key:value,key:value`) + defines a filter that Datadog will use when collecting metrics + from Azure. Limit the Azure instances that are pulled into Datadog + by using tags. Only hosts that match one of the defined tags + are imported into Datadog. e.x. `env:production,deploymentgroup:red` + Defaults to `""`. + type: string + resourceCollectionEnabled: + description: (Boolean) When enabled, Datadog collects metadata + and configuration info from cloud resources (such as compute + instances, databases, and load balancers) monitored by this + app registration. When enabled, Datadog collects metadata and + configuration info from cloud resources (such as compute instances, + databases, and load balancers) monitored by this app registration. + type: boolean + tenantName: + description: (String) Your Azure Active Directory ID. Your Azure + Active Directory ID. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.clientId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.clientId) + || (has(self.initProvider) && has(self.initProvider.clientId))' + - message: spec.forProvider.clientSecretSecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.clientSecretSecretRef)' + - message: spec.forProvider.tenantName is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.tenantName) + || (has(self.initProvider) && has(self.initProvider.tenantName))' + status: + description: AzureStatus defines the observed state of Azure. + properties: + atProvider: + properties: + appServicePlanFilters: + description: separated list of tags (in the form key:value,key:value) + defines a filter that Datadog uses when collecting metrics from + Azure App Service Plans. Only App Service Plans that match one + of the defined tags are imported into Datadog. The rest, including + the apps and functions running on them, are ignored. This also + filters the metrics for any App or Function running on the App + Service Plan(s). Defaults to "". This comma-separated list of + tags (in the form `key:value,key:value`) defines a filter that + Datadog uses when collecting metrics from Azure App Service + Plans. Only App Service Plans that match one of the defined + tags are imported into Datadog. The rest, including the apps + and functions running on them, are ignored. This also filters + the metrics for any App or Function running on the App Service + Plan(s). Defaults to `""`. + type: string + automute: + description: (Boolean) Silence monitors for expected Azure VM + shutdowns. Defaults to false. Silence monitors for expected + Azure VM shutdowns. Defaults to `false`. + type: boolean + clientId: + description: (String) Your Azure web application ID. Your Azure + web application ID. + type: string + containerAppFilters: + description: separated list of tags (in the form key:value,key:value) + defines a filter that Datadog uses when collecting metrics from + Azure Container Apps. Only Container Apps that match one of + the defined tags are imported into Datadog. Defaults to "". + This comma-separated list of tags (in the form `key:value,key:value`) + defines a filter that Datadog uses when collecting metrics from + Azure Container Apps. Only Container Apps that match one of + the defined tags are imported into Datadog. Defaults to `""`. + type: string + cspmEnabled: + description: '(Boolean) When enabled, Datadog’s Cloud Security + Management product scans resource configurations monitored by + this app registration. Note: This requires resource_collection_enabled + to be set to true. Defaults to false. When enabled, Datadog’s + Cloud Security Management product scans resource configurations + monitored by this app registration. Note: This requires `resource_collection_enabled` + to be set to true. Defaults to `false`.' + type: boolean + customMetricsEnabled: + description: (Boolean) Enable custom metrics for your organization. + Defaults to false. Enable custom metrics for your organization. + Defaults to `false`. + type: boolean + hostFilters: + description: (String) String of host tag(s) (in the form key:value,key:value) + defines a filter that Datadog will use when collecting metrics + from Azure. Limit the Azure instances that are pulled into Datadog + by using tags. Only hosts that match one of the defined tags + are imported into Datadog. e.x. env:production,deploymentgroup:red + Defaults to "". String of host tag(s) (in the form `key:value,key:value`) + defines a filter that Datadog will use when collecting metrics + from Azure. Limit the Azure instances that are pulled into Datadog + by using tags. Only hosts that match one of the defined tags + are imported into Datadog. e.x. `env:production,deploymentgroup:red` + Defaults to `""`. + type: string + id: + description: (String) The ID of this resource. + type: string + resourceCollectionEnabled: + description: (Boolean) When enabled, Datadog collects metadata + and configuration info from cloud resources (such as compute + instances, databases, and load balancers) monitored by this + app registration. When enabled, Datadog collects metadata and + configuration info from cloud resources (such as compute instances, + databases, and load balancers) monitored by this app registration. + type: boolean + tenantName: + description: (String) Your Azure Active Directory ID. Your Azure + Active Directory ID. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_cloudflareaccounts.yaml b/package/crds/integration.datadog.upbound.io_cloudflareaccounts.yaml new file mode 100644 index 0000000..7f96180 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_cloudflareaccounts.yaml @@ -0,0 +1,357 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: cloudflareaccounts.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: CloudflareAccount + listKind: CloudflareAccountList + plural: cloudflareaccounts + singular: cloudflareaccount + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: CloudflareAccount is the Schema for the CloudflareAccounts API. + Provides a Datadog IntegrationCloudflareAccount resource. This can be used + to create and manage Datadog integrationcloudflareaccount. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CloudflareAccountSpec defines the desired state of CloudflareAccount + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + apiKeySecretRef: + description: (String, Sensitive) The API key (or token) for the + Cloudflare account. The API key (or token) for the Cloudflare + account. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + email: + description: (String) The email associated with the Cloudflare + account. If an API key is provided (and not a token), this field + is also required. The email associated with the Cloudflare account. + If an API key is provided (and not a token), this field is also + required. + type: string + name: + description: (String) The name of the Cloudflare account. The + name of the Cloudflare account. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + email: + description: (String) The email associated with the Cloudflare + account. If an API key is provided (and not a token), this field + is also required. The email associated with the Cloudflare account. + If an API key is provided (and not a token), this field is also + required. + type: string + name: + description: (String) The name of the Cloudflare account. The + name of the Cloudflare account. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.apiKeySecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.apiKeySecretRef)' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: CloudflareAccountStatus defines the observed state of CloudflareAccount. + properties: + atProvider: + properties: + email: + description: (String) The email associated with the Cloudflare + account. If an API key is provided (and not a token), this field + is also required. The email associated with the Cloudflare account. + If an API key is provided (and not a token), this field is also + required. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name of the Cloudflare account. The + name of the Cloudflare account. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_confluentaccounts.yaml b/package/crds/integration.datadog.upbound.io_confluentaccounts.yaml new file mode 100644 index 0000000..85ee0e4 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_confluentaccounts.yaml @@ -0,0 +1,360 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: confluentaccounts.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ConfluentAccount + listKind: ConfluentAccountList + plural: confluentaccounts + singular: confluentaccount + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ConfluentAccount is the Schema for the ConfluentAccounts API. + Provides a Datadog IntegrationConfluentAccount resource. This can be used + to create and manage Datadog integrationconfluentaccount. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConfluentAccountSpec defines the desired state of ConfluentAccount + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + apiKey: + description: (String) The API key associated with your Confluent + account. The API key associated with your Confluent account. + type: string + apiSecretSecretRef: + description: (String, Sensitive) The API secret associated with + your Confluent account. The API secret associated with your + Confluent account. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + tags: + description: value pairs separated by a colon. A list of strings + representing tags. Can be a single key, or key-value pairs separated + by a colon. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + apiKey: + description: (String) The API key associated with your Confluent + account. The API key associated with your Confluent account. + type: string + tags: + description: value pairs separated by a colon. A list of strings + representing tags. Can be a single key, or key-value pairs separated + by a colon. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.apiKey is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.apiKey) + || (has(self.initProvider) && has(self.initProvider.apiKey))' + - message: spec.forProvider.apiSecretSecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.apiSecretSecretRef)' + status: + description: ConfluentAccountStatus defines the observed state of ConfluentAccount. + properties: + atProvider: + properties: + apiKey: + description: (String) The API key associated with your Confluent + account. The API key associated with your Confluent account. + type: string + id: + description: (String) The ID of this resource. + type: string + tags: + description: value pairs separated by a colon. A list of strings + representing tags. Can be a single key, or key-value pairs separated + by a colon. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_confluentresources.yaml b/package/crds/integration.datadog.upbound.io_confluentresources.yaml new file mode 100644 index 0000000..560085a --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_confluentresources.yaml @@ -0,0 +1,387 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: confluentresources.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ConfluentResource + listKind: ConfluentResourceList + plural: confluentresources + singular: confluentresource + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ConfluentResource is the Schema for the ConfluentResources API. + Provides a Datadog IntegrationConfluentResource resource. This can be used + to create and manage Datadog integrationconfluentresource. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConfluentResourceSpec defines the desired state of ConfluentResource + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accountId: + description: (String) Confluent Account ID. Confluent Account + ID. + type: string + enableCustomMetrics: + description: (Boolean) Enable the custom.consumer_lag_offset metric, + which contains extra metric tags. Defaults to false. Enable + the `custom.consumer_lag_offset` metric, which contains extra + metric tags. Defaults to `false`. + type: boolean + resourceId: + description: (String) The ID associated with a Confluent resource. + The ID associated with a Confluent resource. + type: string + resourceType: + description: (String) The resource type of the Resource. Can be + kafka, connector, ksql, or schema_registry. The resource type + of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`. + type: string + tags: + description: value pairs separated by a colon. A list of strings + representing tags. Can be a single key, or key-value pairs separated + by a colon. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accountId: + description: (String) Confluent Account ID. Confluent Account + ID. + type: string + enableCustomMetrics: + description: (Boolean) Enable the custom.consumer_lag_offset metric, + which contains extra metric tags. Defaults to false. Enable + the `custom.consumer_lag_offset` metric, which contains extra + metric tags. Defaults to `false`. + type: boolean + resourceId: + description: (String) The ID associated with a Confluent resource. + The ID associated with a Confluent resource. + type: string + resourceType: + description: (String) The resource type of the Resource. Can be + kafka, connector, ksql, or schema_registry. The resource type + of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`. + type: string + tags: + description: value pairs separated by a colon. A list of strings + representing tags. Can be a single key, or key-value pairs separated + by a colon. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.accountId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.accountId) + || (has(self.initProvider) && has(self.initProvider.accountId))' + - message: spec.forProvider.resourceId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.resourceId) + || (has(self.initProvider) && has(self.initProvider.resourceId))' + status: + description: ConfluentResourceStatus defines the observed state of ConfluentResource. + properties: + atProvider: + properties: + accountId: + description: (String) Confluent Account ID. Confluent Account + ID. + type: string + enableCustomMetrics: + description: (Boolean) Enable the custom.consumer_lag_offset metric, + which contains extra metric tags. Defaults to false. Enable + the `custom.consumer_lag_offset` metric, which contains extra + metric tags. Defaults to `false`. + type: boolean + id: + description: (String) The ID of this resource. + type: string + resourceId: + description: (String) The ID associated with a Confluent resource. + The ID associated with a Confluent resource. + type: string + resourceType: + description: (String) The resource type of the Resource. Can be + kafka, connector, ksql, or schema_registry. The resource type + of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`. + type: string + tags: + description: value pairs separated by a colon. A list of strings + representing tags. Can be a single key, or key-value pairs separated + by a colon. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_fastlyaccounts.yaml b/package/crds/integration.datadog.upbound.io_fastlyaccounts.yaml new file mode 100644 index 0000000..64a1b26 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_fastlyaccounts.yaml @@ -0,0 +1,330 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: fastlyaccounts.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: FastlyAccount + listKind: FastlyAccountList + plural: fastlyaccounts + singular: fastlyaccount + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: FastlyAccount is the Schema for the FastlyAccounts API. Provides + a Datadog IntegrationFastlyAccount resource. This can be used to create + and manage Datadog integrationfastlyaccount. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: FastlyAccountSpec defines the desired state of FastlyAccount + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + apiKey: + description: (String) The API key for the Fastly account. The + API key for the Fastly account. + type: string + name: + description: (String) The name of the Fastly account. The name + of the Fastly account. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + apiKey: + description: (String) The API key for the Fastly account. The + API key for the Fastly account. + type: string + name: + description: (String) The name of the Fastly account. The name + of the Fastly account. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.apiKey is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.apiKey) + || (has(self.initProvider) && has(self.initProvider.apiKey))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: FastlyAccountStatus defines the observed state of FastlyAccount. + properties: + atProvider: + properties: + apiKey: + description: (String) The API key for the Fastly account. The + API key for the Fastly account. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name of the Fastly account. The name + of the Fastly account. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_fastlyservices.yaml b/package/crds/integration.datadog.upbound.io_fastlyservices.yaml new file mode 100644 index 0000000..b83aafd --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_fastlyservices.yaml @@ -0,0 +1,344 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: fastlyservices.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: FastlyService + listKind: FastlyServiceList + plural: fastlyservices + singular: fastlyservice + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: FastlyService is the Schema for the FastlyServices API. Provides + a Datadog IntegrationFastlyService resource. This can be used to create + and manage Datadog integrationfastlyservice. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: FastlyServiceSpec defines the desired state of FastlyService + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accountId: + description: (String) Fastly Account id. Fastly Account id. + type: string + serviceId: + description: (String) The ID of the Fastly service. The ID of + the Fastly service. + type: string + tags: + description: (Set of String) A list of tags for the Fastly service. + A list of tags for the Fastly service. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accountId: + description: (String) Fastly Account id. Fastly Account id. + type: string + serviceId: + description: (String) The ID of the Fastly service. The ID of + the Fastly service. + type: string + tags: + description: (Set of String) A list of tags for the Fastly service. + A list of tags for the Fastly service. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.serviceId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.serviceId) + || (has(self.initProvider) && has(self.initProvider.serviceId))' + status: + description: FastlyServiceStatus defines the observed state of FastlyService. + properties: + atProvider: + properties: + accountId: + description: (String) Fastly Account id. Fastly Account id. + type: string + id: + description: (String) The ID of this resource. + type: string + serviceId: + description: (String) The ID of the Fastly service. The ID of + the Fastly service. + type: string + tags: + description: (Set of String) A list of tags for the Fastly service. + A list of tags for the Fastly service. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_gcps.yaml b/package/crds/integration.datadog.upbound.io_gcps.yaml new file mode 100644 index 0000000..3f3e9c7 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_gcps.yaml @@ -0,0 +1,445 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: gcps.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: GCP + listKind: GCPList + plural: gcps + singular: gcp + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: GCP is the Schema for the GCPs API. This resource is deprecated + — use the datadog_integration_gcp_sts resource instead. Provides a Datadog + - Google Cloud Platform integration resource. This can be used to create + and manage Datadog - Google Cloud Platform integration. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GCPSpec defines the desired state of GCP + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + automute: + description: (Boolean) Silence monitors for expected GCE instance + shutdowns. Defaults to false. Silence monitors for expected + GCE instance shutdowns. Defaults to `false`. + type: boolean + clientEmail: + description: (String) Your email found in your JSON service account + key. Your email found in your JSON service account key. + type: string + clientId: + description: (String) Your ID found in your JSON service account + key. Your ID found in your JSON service account key. + type: string + cspmResourceCollectionEnabled: + description: (Boolean) Whether Datadog collects cloud security + posture management resources from your GCP project. Defaults + to false. Whether Datadog collects cloud security posture management + resources from your GCP project. Defaults to `false`. + type: boolean + hostFilters: + description: (String) Limit the GCE instances that are pulled + into Datadog by using tags. Only hosts that match one of the + defined tags are imported into Datadog. Limit the GCE instances + that are pulled into Datadog by using tags. Only hosts that + match one of the defined tags are imported into Datadog. + type: string + privateKeyId: + description: (String) Your private key ID found in your JSON service + account key. Your private key ID found in your JSON service + account key. + type: string + privateKeySecretRef: + description: (String, Sensitive) Your private key name found in + your JSON service account key. Your private key name found in + your JSON service account key. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + projectId: + description: (String) Your Google Cloud project ID found in your + JSON service account key. Your Google Cloud project ID found + in your JSON service account key. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + automute: + description: (Boolean) Silence monitors for expected GCE instance + shutdowns. Defaults to false. Silence monitors for expected + GCE instance shutdowns. Defaults to `false`. + type: boolean + clientEmail: + description: (String) Your email found in your JSON service account + key. Your email found in your JSON service account key. + type: string + clientId: + description: (String) Your ID found in your JSON service account + key. Your ID found in your JSON service account key. + type: string + cspmResourceCollectionEnabled: + description: (Boolean) Whether Datadog collects cloud security + posture management resources from your GCP project. Defaults + to false. Whether Datadog collects cloud security posture management + resources from your GCP project. Defaults to `false`. + type: boolean + hostFilters: + description: (String) Limit the GCE instances that are pulled + into Datadog by using tags. Only hosts that match one of the + defined tags are imported into Datadog. Limit the GCE instances + that are pulled into Datadog by using tags. Only hosts that + match one of the defined tags are imported into Datadog. + type: string + privateKeyId: + description: (String) Your private key ID found in your JSON service + account key. Your private key ID found in your JSON service + account key. + type: string + projectId: + description: (String) Your Google Cloud project ID found in your + JSON service account key. Your Google Cloud project ID found + in your JSON service account key. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.clientEmail is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.clientEmail) + || (has(self.initProvider) && has(self.initProvider.clientEmail))' + - message: spec.forProvider.clientId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.clientId) + || (has(self.initProvider) && has(self.initProvider.clientId))' + - message: spec.forProvider.privateKeySecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.privateKeySecretRef)' + - message: spec.forProvider.privateKeyId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.privateKeyId) + || (has(self.initProvider) && has(self.initProvider.privateKeyId))' + - message: spec.forProvider.projectId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.projectId) + || (has(self.initProvider) && has(self.initProvider.projectId))' + status: + description: GCPStatus defines the observed state of GCP. + properties: + atProvider: + properties: + automute: + description: (Boolean) Silence monitors for expected GCE instance + shutdowns. Defaults to false. Silence monitors for expected + GCE instance shutdowns. Defaults to `false`. + type: boolean + clientEmail: + description: (String) Your email found in your JSON service account + key. Your email found in your JSON service account key. + type: string + clientId: + description: (String) Your ID found in your JSON service account + key. Your ID found in your JSON service account key. + type: string + cspmResourceCollectionEnabled: + description: (Boolean) Whether Datadog collects cloud security + posture management resources from your GCP project. Defaults + to false. Whether Datadog collects cloud security posture management + resources from your GCP project. Defaults to `false`. + type: boolean + hostFilters: + description: (String) Limit the GCE instances that are pulled + into Datadog by using tags. Only hosts that match one of the + defined tags are imported into Datadog. Limit the GCE instances + that are pulled into Datadog by using tags. Only hosts that + match one of the defined tags are imported into Datadog. + type: string + id: + description: (String) The ID of this resource. + type: string + privateKeyId: + description: (String) Your private key ID found in your JSON service + account key. Your private key ID found in your JSON service + account key. + type: string + projectId: + description: (String) Your Google Cloud project ID found in your + JSON service account key. Your Google Cloud project ID found + in your JSON service account key. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_gcpstses.yaml b/package/crds/integration.datadog.upbound.io_gcpstses.yaml new file mode 100644 index 0000000..68eb5c0 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_gcpstses.yaml @@ -0,0 +1,372 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: gcpstses.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: GCPSTS + listKind: GCPSTSList + plural: gcpstses + singular: gcpsts + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: GCPSTS is the Schema for the GCPSTSs API. Provides a Datadog + Integration GCP Sts resource. This can be used to create and manage Datadog + - Google Cloud Platform integration. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GCPSTSSpec defines the desired state of GCPSTS + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + automute: + description: (Boolean) Silence monitors for expected GCE instance + shutdowns. Silence monitors for expected GCE instance shutdowns. + type: boolean + clientEmail: + description: (String) Your service account email address. Your + service account email address. + type: string + hostFilters: + description: (Set of String) Your Host Filters. Your Host Filters. + items: + type: string + type: array + x-kubernetes-list-type: set + isCspmEnabled: + description: (Boolean) When enabled, Datadog performs configuration + checks across your Google Cloud environment by continuously + scanning every resource, which may incur additional charges. + When enabled, Datadog performs configuration checks across your + Google Cloud environment by continuously scanning every resource, + which may incur additional charges. + type: boolean + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + automute: + description: (Boolean) Silence monitors for expected GCE instance + shutdowns. Silence monitors for expected GCE instance shutdowns. + type: boolean + clientEmail: + description: (String) Your service account email address. Your + service account email address. + type: string + hostFilters: + description: (Set of String) Your Host Filters. Your Host Filters. + items: + type: string + type: array + x-kubernetes-list-type: set + isCspmEnabled: + description: (Boolean) When enabled, Datadog performs configuration + checks across your Google Cloud environment by continuously + scanning every resource, which may incur additional charges. + When enabled, Datadog performs configuration checks across your + Google Cloud environment by continuously scanning every resource, + which may incur additional charges. + type: boolean + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.clientEmail is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.clientEmail) + || (has(self.initProvider) && has(self.initProvider.clientEmail))' + status: + description: GCPSTSStatus defines the observed state of GCPSTS. + properties: + atProvider: + properties: + automute: + description: (Boolean) Silence monitors for expected GCE instance + shutdowns. Silence monitors for expected GCE instance shutdowns. + type: boolean + clientEmail: + description: (String) Your service account email address. Your + service account email address. + type: string + delegateAccountEmail: + description: (String) Datadog's STS Delegate Email. Datadog's + STS Delegate Email. + type: string + hostFilters: + description: (Set of String) Your Host Filters. Your Host Filters. + items: + type: string + type: array + x-kubernetes-list-type: set + id: + description: (String) The ID of this resource. + type: string + isCspmEnabled: + description: (Boolean) When enabled, Datadog performs configuration + checks across your Google Cloud environment by continuously + scanning every resource, which may incur additional charges. + When enabled, Datadog performs configuration checks across your + Google Cloud environment by continuously scanning every resource, + which may incur additional charges. + type: boolean + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_opsgenieserviceobjects.yaml b/package/crds/integration.datadog.upbound.io_opsgenieserviceobjects.yaml new file mode 100644 index 0000000..f341974 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_opsgenieserviceobjects.yaml @@ -0,0 +1,371 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: opsgenieserviceobjects.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: OpsgenieServiceObject + listKind: OpsgenieServiceObjectList + plural: opsgenieserviceobjects + singular: opsgenieserviceobject + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: OpsgenieServiceObject is the Schema for the OpsgenieServiceObjects + API. Resource for interacting with Datadog Opsgenie Service API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: OpsgenieServiceObjectSpec defines the desired state of OpsgenieServiceObject + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + customUrl: + description: (String) The custom url for a custom region. The + custom url for a custom region. + type: string + name: + description: (String) The name for the Opsgenie service. The name + for the Opsgenie service. + type: string + opsgenieApiKeySecretRef: + description: '(String, Sensitive) The Opsgenie API key for the + Opsgenie service. Note: Since the Datadog API never returns + Opsgenie API keys, it is impossible to detect drifts. The Opsgenie + API key for the Opsgenie service. Note: Since the Datadog API + never returns Opsgenie API keys, it is impossible to detect + [drifts](https://www.hashicorp.io/docs/commands/taint.html) + to have it destroyed and recreated.' + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + region: + description: (String) The region for the Opsgenie service. Valid + values are us, eu, custom. The region for the Opsgenie service. + Valid values are `us`, `eu`, `custom`. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + customUrl: + description: (String) The custom url for a custom region. The + custom url for a custom region. + type: string + name: + description: (String) The name for the Opsgenie service. The name + for the Opsgenie service. + type: string + region: + description: (String) The region for the Opsgenie service. Valid + values are us, eu, custom. The region for the Opsgenie service. + Valid values are `us`, `eu`, `custom`. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.opsgenieApiKeySecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.opsgenieApiKeySecretRef)' + - message: spec.forProvider.region is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.region) + || (has(self.initProvider) && has(self.initProvider.region))' + status: + description: OpsgenieServiceObjectStatus defines the observed state of + OpsgenieServiceObject. + properties: + atProvider: + properties: + customUrl: + description: (String) The custom url for a custom region. The + custom url for a custom region. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name for the Opsgenie service. The name + for the Opsgenie service. + type: string + region: + description: (String) The region for the Opsgenie service. Valid + values are us, eu, custom. The region for the Opsgenie service. + Valid values are `us`, `eu`, `custom`. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_pagerduties.yaml b/package/crds/integration.datadog.upbound.io_pagerduties.yaml new file mode 100644 index 0000000..e73561c --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_pagerduties.yaml @@ -0,0 +1,350 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: pagerduties.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Pagerduty + listKind: PagerdutyList + plural: pagerduties + singular: pagerduty + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Pagerduty is the Schema for the Pagerdutys API. Provides a Datadog + - PagerDuty resource. This can be used to create and manage Datadog - PagerDuty + integration. See also PagerDuty Integration Guide https://www.pagerduty.com/docs/guides/datadog-integration-guide/. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PagerdutySpec defines the desired state of Pagerduty + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + apiTokenSecretRef: + description: (String, Sensitive) Your PagerDuty API token. Your + PagerDuty API token. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + schedules: + description: (List of String) Array of your schedule URLs. Array + of your schedule URLs. + items: + type: string + type: array + subdomain: + description: (String) Your PagerDuty account’s personalized subdomain + name. Your PagerDuty account’s personalized subdomain name. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + schedules: + description: (List of String) Array of your schedule URLs. Array + of your schedule URLs. + items: + type: string + type: array + subdomain: + description: (String) Your PagerDuty account’s personalized subdomain + name. Your PagerDuty account’s personalized subdomain name. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.subdomain is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.subdomain) + || (has(self.initProvider) && has(self.initProvider.subdomain))' + status: + description: PagerdutyStatus defines the observed state of Pagerduty. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + schedules: + description: (List of String) Array of your schedule URLs. Array + of your schedule URLs. + items: + type: string + type: array + subdomain: + description: (String) Your PagerDuty account’s personalized subdomain + name. Your PagerDuty account’s personalized subdomain name. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_pagerdutyserviceobjects.yaml b/package/crds/integration.datadog.upbound.io_pagerdutyserviceobjects.yaml new file mode 100644 index 0000000..64ed149 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_pagerdutyserviceobjects.yaml @@ -0,0 +1,342 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: pagerdutyserviceobjects.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: PagerdutyServiceObject + listKind: PagerdutyServiceObjectList + plural: pagerdutyserviceobjects + singular: pagerdutyserviceobject + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: PagerdutyServiceObject is the Schema for the PagerdutyServiceObjects + API. Provides access to individual Service Objects of Datadog - PagerDuty + integrations. Note that the Datadog - PagerDuty integration must be activated + in the Datadog UI in order for this resource to be usable. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PagerdutyServiceObjectSpec defines the desired state of PagerdutyServiceObject + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + serviceKeySecretRef: + description: '(String, Sensitive) Your Service name associated + service key in PagerDuty. Your Service name associated service + key in PagerDuty. This key may also be referred to as an Integration + Key or Routing Key in the Pagerduty Integration [documentation](https://www.pagerduty.io/providers/PagerDuty/pagerduty/latest/docs/resources/service_integration#integration_key) + Note: Since the Datadog API never returns service keys, it is + impossible to detect [drifts](https://www.hashicorp.io/docs/commands/taint.html) + to have it destroyed and recreated.' + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + serviceName: + description: (String) Your Service name in PagerDuty. Your Service + name in PagerDuty. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + serviceName: + description: (String) Your Service name in PagerDuty. Your Service + name in PagerDuty. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.serviceKeySecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.serviceKeySecretRef)' + - message: spec.forProvider.serviceName is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.serviceName) + || (has(self.initProvider) && has(self.initProvider.serviceName))' + status: + description: PagerdutyServiceObjectStatus defines the observed state of + PagerdutyServiceObject. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + serviceName: + description: (String) Your Service name in PagerDuty. Your Service + name in PagerDuty. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_slackchannels.yaml b/package/crds/integration.datadog.upbound.io_slackchannels.yaml new file mode 100644 index 0000000..e80deaa --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_slackchannels.yaml @@ -0,0 +1,414 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: slackchannels.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: SlackChannel + listKind: SlackChannelList + plural: slackchannels + singular: slackchannel + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: SlackChannel is the Schema for the SlackChannels API. Resource + for interacting with the Datadog Slack channel API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: SlackChannelSpec defines the desired state of SlackChannel + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + accountName: + description: (String) Slack account name. Slack account name. + type: string + channelName: + description: (String) Slack channel name. Slack channel name. + type: string + display: + description: '(Block List, Min: 1, Max: 1) Configuration options + for what is shown in an alert event message. (see below for + nested schema) Configuration options for what is shown in an + alert event message.' + items: + properties: + message: + description: (Boolean) Show the main body of the alert event. + Defaults to true. Show the main body of the alert event. + Defaults to `true`. + type: boolean + notified: + description: handles in the alert event. Defaults to true. + Show the list of @-handles in the alert event. Defaults + to `true`. + type: boolean + snapshot: + description: (Boolean) Show the alert event's snapshot image. + Defaults to true. Show the alert event's snapshot image. + Defaults to `true`. + type: boolean + tags: + description: (Boolean) Show the scopes on which the monitor + alerted. Defaults to true. Show the scopes on which the + monitor alerted. Defaults to `true`. + type: boolean + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + accountName: + description: (String) Slack account name. Slack account name. + type: string + channelName: + description: (String) Slack channel name. Slack channel name. + type: string + display: + description: '(Block List, Min: 1, Max: 1) Configuration options + for what is shown in an alert event message. (see below for + nested schema) Configuration options for what is shown in an + alert event message.' + items: + properties: + message: + description: (Boolean) Show the main body of the alert event. + Defaults to true. Show the main body of the alert event. + Defaults to `true`. + type: boolean + notified: + description: handles in the alert event. Defaults to true. + Show the list of @-handles in the alert event. Defaults + to `true`. + type: boolean + snapshot: + description: (Boolean) Show the alert event's snapshot image. + Defaults to true. Show the alert event's snapshot image. + Defaults to `true`. + type: boolean + tags: + description: (Boolean) Show the scopes on which the monitor + alerted. Defaults to true. Show the scopes on which the + monitor alerted. Defaults to `true`. + type: boolean + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.accountName is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.accountName) + || (has(self.initProvider) && has(self.initProvider.accountName))' + - message: spec.forProvider.channelName is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.channelName) + || (has(self.initProvider) && has(self.initProvider.channelName))' + - message: spec.forProvider.display is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.display) + || (has(self.initProvider) && has(self.initProvider.display))' + status: + description: SlackChannelStatus defines the observed state of SlackChannel. + properties: + atProvider: + properties: + accountName: + description: (String) Slack account name. Slack account name. + type: string + channelName: + description: (String) Slack channel name. Slack channel name. + type: string + display: + description: '(Block List, Min: 1, Max: 1) Configuration options + for what is shown in an alert event message. (see below for + nested schema) Configuration options for what is shown in an + alert event message.' + items: + properties: + message: + description: (Boolean) Show the main body of the alert event. + Defaults to true. Show the main body of the alert event. + Defaults to `true`. + type: boolean + notified: + description: handles in the alert event. Defaults to true. + Show the list of @-handles in the alert event. Defaults + to `true`. + type: boolean + snapshot: + description: (Boolean) Show the alert event's snapshot image. + Defaults to true. Show the alert event's snapshot image. + Defaults to `true`. + type: boolean + tags: + description: (Boolean) Show the scopes on which the monitor + alerted. Defaults to true. Show the scopes on which the + monitor alerted. Defaults to `true`. + type: boolean + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_archiveorders.yaml b/package/crds/logs.datadog.upbound.io_archiveorders.yaml new file mode 100644 index 0000000..5ba4d37 --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_archiveorders.yaml @@ -0,0 +1,336 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: archiveorders.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ArchiveOrder + listKind: ArchiveOrderList + plural: archiveorders + singular: archiveorder + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ArchiveOrder is the Schema for the ArchiveOrders API. Provides + a Datadog Logs Archive API https://docs.datadoghq.com/api/v2/logs-archives/ + resource, which is used to manage Datadog log archives order. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ArchiveOrderSpec defines the desired state of ArchiveOrder + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + archiveIds: + description: (List of String) The archive IDs list. The order + of archive IDs in this attribute defines the overall archive + order for logs. If archive_ids is empty or not specified, it + will import the actual archive order, and create the resource. + Otherwise, it will try to update the order. The archive IDs + list. The order of archive IDs in this attribute defines the + overall archive order for logs. If `archive_ids` is empty or + not specified, it will import the actual archive order, and + create the resource. Otherwise, it will try to update the order. + items: + type: string + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + archiveIds: + description: (List of String) The archive IDs list. The order + of archive IDs in this attribute defines the overall archive + order for logs. If archive_ids is empty or not specified, it + will import the actual archive order, and create the resource. + Otherwise, it will try to update the order. The archive IDs + list. The order of archive IDs in this attribute defines the + overall archive order for logs. If `archive_ids` is empty or + not specified, it will import the actual archive order, and + create the resource. Otherwise, it will try to update the order. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: ArchiveOrderStatus defines the observed state of ArchiveOrder. + properties: + atProvider: + properties: + archiveIds: + description: (List of String) The archive IDs list. The order + of archive IDs in this attribute defines the overall archive + order for logs. If archive_ids is empty or not specified, it + will import the actual archive order, and create the resource. + Otherwise, it will try to update the order. The archive IDs + list. The order of archive IDs in this attribute defines the + overall archive order for logs. If `archive_ids` is empty or + not specified, it will import the actual archive order, and + create the resource. Otherwise, it will try to update the order. + items: + type: string + type: array + id: + description: (String) The ID of this resource. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_archives.yaml b/package/crds/logs.datadog.upbound.io_archives.yaml new file mode 100644 index 0000000..e98429f --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_archives.yaml @@ -0,0 +1,594 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: archives.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Archive + listKind: ArchiveList + plural: archives + singular: archive + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Archive is the Schema for the Archives API. Provides a Datadog + Logs Archive API resource, which is used to create and manage Datadog logs + archives. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ArchiveSpec defines the desired state of Archive + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + azureArchive: + description: '(Block List, Max: 1) Definition of an azure archive. + (see below for nested schema) Definition of an azure archive.' + items: + properties: + clientId: + description: (String) Your client id. Your client id. + type: string + container: + description: (String) The container where the archive is + stored. The container where the archive is stored. + type: string + path: + description: (String) The path where the archive is stored. + The path where the archive is stored. + type: string + storageAccount: + description: (String) The associated storage account. The + associated storage account. + type: string + tenantId: + description: (String) Your tenant id. Your tenant id. + type: string + type: object + type: array + gcsArchive: + description: '(Block List, Max: 1) Definition of a GCS archive. + (see below for nested schema) Definition of a GCS archive.' + items: + properties: + bucket: + description: (String) Name of your GCS bucket. Name of your + GCS bucket. + type: string + clientEmail: + description: (String) Your client email. Your client email. + type: string + path: + description: (String) The path where the archive is stored. + Path where the archive is stored. + type: string + projectId: + description: (String) Your project id. Your project id. + type: string + type: object + type: array + includeTags: + description: (Boolean) To store the tags in the archive, set the + value true. If it is set to false, the tags will be dropped + when the logs are sent to the archive. Defaults to false. To + store the tags in the archive, set the value `true`. If it is + set to `false`, the tags will be dropped when the logs are sent + to the archive. Defaults to `false`. + type: boolean + name: + description: (String) Your archive name. Your archive name. + type: string + query: + description: (String) The archive query/filter. Logs matching + this query are included in the archive. The archive query/filter. + Logs matching this query are included in the archive. + type: string + rehydrationMaxScanSizeInGb: + description: (Number) To limit the rehydration scan size for the + archive, set a value in GB. To limit the rehydration scan size + for the archive, set a value in GB. + type: number + rehydrationTags: + description: (List of String) An array of tags to add to rehydrated + logs from an archive. An array of tags to add to rehydrated + logs from an archive. + items: + type: string + type: array + s3Archive: + description: '(Block List, Max: 1) Definition of an s3 archive. + (see below for nested schema) Definition of an s3 archive.' + items: + properties: + accountId: + description: (String) Your AWS account id. Your AWS account + id. + type: string + bucket: + description: (String) Name of your GCS bucket. Name of your + s3 bucket. + type: string + path: + description: (String) The path where the archive is stored. + Path where the archive is stored. + type: string + roleName: + description: (String) Your AWS role name Your AWS role name + type: string + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + azureArchive: + description: '(Block List, Max: 1) Definition of an azure archive. + (see below for nested schema) Definition of an azure archive.' + items: + properties: + clientId: + description: (String) Your client id. Your client id. + type: string + container: + description: (String) The container where the archive is + stored. The container where the archive is stored. + type: string + path: + description: (String) The path where the archive is stored. + The path where the archive is stored. + type: string + storageAccount: + description: (String) The associated storage account. The + associated storage account. + type: string + tenantId: + description: (String) Your tenant id. Your tenant id. + type: string + type: object + type: array + gcsArchive: + description: '(Block List, Max: 1) Definition of a GCS archive. + (see below for nested schema) Definition of a GCS archive.' + items: + properties: + bucket: + description: (String) Name of your GCS bucket. Name of your + GCS bucket. + type: string + clientEmail: + description: (String) Your client email. Your client email. + type: string + path: + description: (String) The path where the archive is stored. + Path where the archive is stored. + type: string + projectId: + description: (String) Your project id. Your project id. + type: string + type: object + type: array + includeTags: + description: (Boolean) To store the tags in the archive, set the + value true. If it is set to false, the tags will be dropped + when the logs are sent to the archive. Defaults to false. To + store the tags in the archive, set the value `true`. If it is + set to `false`, the tags will be dropped when the logs are sent + to the archive. Defaults to `false`. + type: boolean + name: + description: (String) Your archive name. Your archive name. + type: string + query: + description: (String) The archive query/filter. Logs matching + this query are included in the archive. The archive query/filter. + Logs matching this query are included in the archive. + type: string + rehydrationMaxScanSizeInGb: + description: (Number) To limit the rehydration scan size for the + archive, set a value in GB. To limit the rehydration scan size + for the archive, set a value in GB. + type: number + rehydrationTags: + description: (List of String) An array of tags to add to rehydrated + logs from an archive. An array of tags to add to rehydrated + logs from an archive. + items: + type: string + type: array + s3Archive: + description: '(Block List, Max: 1) Definition of an s3 archive. + (see below for nested schema) Definition of an s3 archive.' + items: + properties: + accountId: + description: (String) Your AWS account id. Your AWS account + id. + type: string + bucket: + description: (String) Name of your GCS bucket. Name of your + s3 bucket. + type: string + path: + description: (String) The path where the archive is stored. + Path where the archive is stored. + type: string + roleName: + description: (String) Your AWS role name Your AWS role name + type: string + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.query is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.query) + || (has(self.initProvider) && has(self.initProvider.query))' + status: + description: ArchiveStatus defines the observed state of Archive. + properties: + atProvider: + properties: + azureArchive: + description: '(Block List, Max: 1) Definition of an azure archive. + (see below for nested schema) Definition of an azure archive.' + items: + properties: + clientId: + description: (String) Your client id. Your client id. + type: string + container: + description: (String) The container where the archive is + stored. The container where the archive is stored. + type: string + path: + description: (String) The path where the archive is stored. + The path where the archive is stored. + type: string + storageAccount: + description: (String) The associated storage account. The + associated storage account. + type: string + tenantId: + description: (String) Your tenant id. Your tenant id. + type: string + type: object + type: array + gcsArchive: + description: '(Block List, Max: 1) Definition of a GCS archive. + (see below for nested schema) Definition of a GCS archive.' + items: + properties: + bucket: + description: (String) Name of your GCS bucket. Name of your + GCS bucket. + type: string + clientEmail: + description: (String) Your client email. Your client email. + type: string + path: + description: (String) The path where the archive is stored. + Path where the archive is stored. + type: string + projectId: + description: (String) Your project id. Your project id. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + includeTags: + description: (Boolean) To store the tags in the archive, set the + value true. If it is set to false, the tags will be dropped + when the logs are sent to the archive. Defaults to false. To + store the tags in the archive, set the value `true`. If it is + set to `false`, the tags will be dropped when the logs are sent + to the archive. Defaults to `false`. + type: boolean + name: + description: (String) Your archive name. Your archive name. + type: string + query: + description: (String) The archive query/filter. Logs matching + this query are included in the archive. The archive query/filter. + Logs matching this query are included in the archive. + type: string + rehydrationMaxScanSizeInGb: + description: (Number) To limit the rehydration scan size for the + archive, set a value in GB. To limit the rehydration scan size + for the archive, set a value in GB. + type: number + rehydrationTags: + description: (List of String) An array of tags to add to rehydrated + logs from an archive. An array of tags to add to rehydrated + logs from an archive. + items: + type: string + type: array + s3Archive: + description: '(Block List, Max: 1) Definition of an s3 archive. + (see below for nested schema) Definition of an s3 archive.' + items: + properties: + accountId: + description: (String) Your AWS account id. Your AWS account + id. + type: string + bucket: + description: (String) Name of your GCS bucket. Name of your + s3 bucket. + type: string + path: + description: (String) The path where the archive is stored. + Path where the archive is stored. + type: string + roleName: + description: (String) Your AWS role name Your AWS role name + type: string + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_custompipelines.yaml b/package/crds/logs.datadog.upbound.io_custompipelines.yaml new file mode 100644 index 0000000..555f013 --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_custompipelines.yaml @@ -0,0 +1,3624 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: custompipelines.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: CustomPipeline + listKind: CustomPipelineList + plural: custompipelines + singular: custompipeline + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: 'CustomPipeline is the Schema for the CustomPipelines API. Provides + a Datadog Logs Pipeline API https://docs.datadoghq.com/api/v1/logs-pipelines/ + resource, which is used to create and manage Datadog logs custom pipelines. + Each datadog_logs_custom_pipeline resource defines a complete pipeline. + The order of the pipelines is maintained in a different resource: datadog_logs_pipeline_order. + When creating a new pipeline, you need to explicitly add this pipeline to + the datadog_logs_pipeline_order resource to track the pipeline. Similarly, + when a pipeline needs to be destroyed, remove its references from the datadog_logs_pipeline_order + resource.' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CustomPipelineSpec defines the desired state of CustomPipeline + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + filter: + description: '(Block List, Min: 1) (see below for nested schema)' + items: + properties: + query: + description: (String) Filter criteria of the category. Filter + criteria of the category. + type: string + type: object + type: array + isEnabled: + description: (Boolean) + type: boolean + name: + description: (String) + type: string + processor: + description: (Block List) (see below for nested schema) + items: + properties: + arithmeticProcessor: + description: '(Block List, Max: 1) Arithmetic Processor. + More information can be found in the official docs (see + below for nested schema) Arithmetic Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)' + items: + properties: + expression: + description: (String) Arithmetic operation between + one or more log attributes. Arithmetic operation + between one or more log attributes. + type: string + isEnabled: + description: (Boolean) Boolean value to enable your + pipeline. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces all missing + attributes of expression by 0, false skips the operation + if an attribute is missing. If true, it replaces + all missing attributes of expression by 0, false + skips the operation if an attribute is missing. + type: boolean + name: + description: (String) Your pipeline name. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the arithmetic + operation. + type: string + type: object + type: array + attributeRemapper: + description: '(Block List, Max: 1) Attribute Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Attribute Remapper Processor. + More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + overrideOnConflict: + description: (Boolean) Override the target element + if already set. Override the target element if already + set. + type: boolean + preserveSource: + description: (Boolean) Remove or preserve the remapped + source element. Remove or preserve the remapped + source element. + type: boolean + sourceType: + description: (String) Defines where the sources are + from (log attribute or tag). Defines where the sources + are from (log `attribute` or `tag`). + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes or tags. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Final attribute + or tag name to remap the sources. + type: string + targetFormat: + description: (String) If the target_type of the remapper + is attribute, try to cast the value to a new specific + type. If the cast is not possible, the original + type is kept. string, integer, or double are the + possible types. If the target_type is tag, this + parameter may not be specified. If the `target_type` + of the remapper is `attribute`, try to cast the + value to a new specific type. If the cast is not + possible, the original type is kept. `string`, `integer`, + or `double` are the possible types. If the `target_type` + is `tag`, this parameter may not be specified. + type: string + targetType: + description: (String) Defines if the target is a log + attribute or tag. Defines if the target is a log + `attribute` or `tag`. + type: string + type: object + type: array + categoryProcessor: + description: '(Block List, Max: 1) Category Processor. More + information can be found in the official docs (see below + for nested schema) Category Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)' + items: + properties: + category: + description: '(Block List, Min: 1) List of filters + to match or exclude a log with their corresponding + name to assign a custom value to the log. (see below + for nested schema) List of filters to match or exclude + a log with their corresponding name to assign a + custom value to the log.' + items: + properties: + filter: + description: '(Block List, Min: 1) (see below + for nested schema)' + items: + properties: + query: + description: (String) Filter criteria + of the category. Filter criteria of + the category. + type: string + type: object + type: array + name: + description: (String) + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the category + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the target attribute whose value is defined by the + matching category. + type: string + type: object + type: array + dateRemapper: + description: '(Block List, Max: 1) Date Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Date Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + geoIpParser: + description: '(Block List, Max: 1) Date GeoIP Processor. + More information can be found in the official docs (see + below for nested schema) Date GeoIP Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + grokParser: + description: '(Block List, Max: 1) Grok Processor. More + information can be found in the official docs (see below + for nested schema) Grok Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)' + items: + properties: + grok: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + items: + properties: + matchRules: + description: (String) Match rules for your grok + parser. Match rules for your grok parser. + type: string + supportRules: + description: (String) Support rules for your + grok parser. Support rules for your grok parser. + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + samples: + description: (List of String) List of sample logs + for this parser. It can save up to 5 samples. Each + sample takes up to 5000 characters. List of sample + logs for this parser. It can save up to 5 samples. + Each sample takes up to 5000 characters. + items: + type: string + type: array + source: + description: (String) Name of the log attribute to + parse. Name of the log attribute to parse. + type: string + type: object + type: array + lookupProcessor: + description: '(Block List, Max: 1) Lookup Processor. More + information can be found in the official docs (see below + for nested schema) Lookup Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + defaultLookup: + description: (String) Default lookup value to use + if there is no entry in the lookup table for the + value of the source attribute. Default lookup value + to use if there is no entry in the lookup table + for the value of the source attribute. + type: string + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + lookupTable: + description: (List of String) List of entries of the + lookup table using key,value format. List of entries + of the lookup table using `key,value` format. + items: + type: string + type: array + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log attribute to + parse. Name of the source attribute used to do the + lookup. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the lookup. + type: string + type: object + type: array + messageRemapper: + description: '(Block List, Max: 1) Message Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Message Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + pipeline: + description: '(Block List, Max: 1) (see below for nested + schema)' + items: + properties: + filter: + description: '(Block List, Min: 1) (see below for + nested schema)' + items: + properties: + query: + description: (String) Filter criteria of the + category. Filter criteria of the category. + type: string + type: object + type: array + isEnabled: + description: (Boolean) + type: boolean + name: + description: (String) + type: string + processor: + description: (Block List) (see below for nested schema) + items: + properties: + arithmeticProcessor: + description: '(Block List, Max: 1) Arithmetic + Processor. More information can be found in + the official docs (see below for nested schema) + Arithmetic Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)' + items: + properties: + expression: + description: (String) Arithmetic operation + between one or more log attributes. + Arithmetic operation between one or + more log attributes. + type: string + isEnabled: + description: (Boolean) Boolean value to + enable your pipeline. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. + type: boolean + name: + description: (String) Your pipeline name. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the arithmetic + operation. + type: string + type: object + type: array + attributeRemapper: + description: '(Block List, Max: 1) Attribute + Remapper Processor. More information can be + found in the official docs (see below for + nested schema) Attribute Remapper Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + overrideOnConflict: + description: (Boolean) Override the target + element if already set. Override the + target element if already set. + type: boolean + preserveSource: + description: (Boolean) Remove or preserve + the remapped source element. Remove + or preserve the remapped source element. + type: boolean + sourceType: + description: (String) Defines where the + sources are from (log attribute or tag). + Defines where the sources are from (log + `attribute` or `tag`). + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes or tags. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Final attribute or tag name + to remap the sources. + type: string + targetFormat: + description: (String) If the target_type + of the remapper is attribute, try to + cast the value to a new specific type. + If the cast is not possible, the original + type is kept. string, integer, or double + are the possible types. If the target_type + is tag, this parameter may not be specified. + If the `target_type` of the remapper + is `attribute`, try to cast the value + to a new specific type. If the cast + is not possible, the original type is + kept. `string`, `integer`, or `double` + are the possible types. If the `target_type` + is `tag`, this parameter may not be + specified. + type: string + targetType: + description: (String) Defines if the target + is a log attribute or tag. Defines if + the target is a log `attribute` or `tag`. + type: string + type: object + type: array + categoryProcessor: + description: '(Block List, Max: 1) Category + Processor. More information can be found in + the official docs (see below for nested schema) + Category Processor. More information can be + found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)' + items: + properties: + category: + description: '(Block List, Min: 1) List + of filters to match or exclude a log + with their corresponding name to assign + a custom value to the log. (see below + for nested schema) List of filters to + match or exclude a log with their corresponding + name to assign a custom value to the + log.' + items: + properties: + filter: + description: '(Block List, Min: + 1) (see below for nested schema)' + items: + properties: + query: + description: (String) Filter + criteria of the category. + Filter criteria of the category. + type: string + type: object + type: array + name: + description: (String) + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the category + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the target attribute + whose value is defined by the matching + category. + type: string + type: object + type: array + dateRemapper: + description: '(Block List, Max: 1) Date Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Date Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + geoIpParser: + description: '(Block List, Max: 1) Date GeoIP + Processor. More information can be found in + the official docs (see below for nested schema) + Date GeoIP Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + grokParser: + description: '(Block List, Max: 1) Grok Processor. + More information can be found in the official + docs (see below for nested schema) Grok Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)' + items: + properties: + grok: + description: '(Block List, Min: 1, Max: + 1) (see below for nested schema)' + items: + properties: + matchRules: + description: (String) Match rules + for your grok parser. Match rules + for your grok parser. + type: string + supportRules: + description: (String) Support rules + for your grok parser. Support + rules for your grok parser. + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + samples: + description: (List of String) List of + sample logs for this parser. It can + save up to 5 samples. Each sample takes + up to 5000 characters. List of sample + logs for this parser. It can save up + to 5 samples. Each sample takes up to + 5000 characters. + items: + type: string + type: array + source: + description: (String) Name of the log + attribute to parse. Name of the log + attribute to parse. + type: string + type: object + type: array + lookupProcessor: + description: '(Block List, Max: 1) Lookup Processor. + More information can be found in the official + docs (see below for nested schema) Lookup + Processor. More information can be found in + the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + defaultLookup: + description: (String) Default lookup value + to use if there is no entry in the lookup + table for the value of the source attribute. + Default lookup value to use if there + is no entry in the lookup table for + the value of the source attribute. + type: string + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + lookupTable: + description: (List of String) List of + entries of the lookup table using key,value + format. List of entries of the lookup + table using `key,value` format. + items: + type: string + type: array + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log + attribute to parse. Name of the source + attribute used to do the lookup. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the lookup. + type: string + type: object + type: array + messageRemapper: + description: '(Block List, Max: 1) Message Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Message Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + referenceTableLookupProcessor: + description: '(Block List, Max: 1) Reference + Table Lookup Processor. Reference Tables are + in public beta. More information can be found + in the official docs (see below for nested + schema) Reference Table Lookup Processor. + Reference Tables are in public beta. More + information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + lookupEnrichmentTable: + description: (String) Name of the Reference + Table for the source attribute and their + associated target attribute values. + Name of the Reference Table for the + source attribute and their associated + target attribute values. + type: string + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log + attribute to parse. Name of the source + attribute used to do the lookup. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the lookup. + type: string + type: object + type: array + serviceRemapper: + description: '(Block List, Max: 1) Service Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Service Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + statusRemapper: + description: '(Block List, Max: 1) Status Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Status Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + stringBuilderProcessor: + description: '(Block List, Max: 1) String Builder + Processor. More information can be found in + the official docs (see below for nested schema) + String Builder Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. If it replaces + all missing attributes of template by + an empty string. + type: boolean + name: + description: (String) The name of the + processor. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. The name of the attribute + that contains the result of the template. + type: string + template: + description: (String) The formula with + one or more attributes and raw text. + The formula with one or more attributes + and raw text. + type: string + type: object + type: array + traceIdRemapper: + description: '(Block List, Max: 1) Trace ID + Remapper Processor. More information can be + found in the official docs (see below for + nested schema) Trace ID Remapper Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + urlParser: + description: '(Block List, Max: 1) URL Parser + Processor. More information can be found in + the official docs (see below for nested schema) + URL Parser Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + normalizeEndingSlashes: + description: (Boolean) Normalize the ending + slashes or not. Normalize the ending + slashes or not. + type: boolean + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + userAgentParser: + description: Agent Parser Processor. More information + can be found in the official docs (see below + for nested schema) User-Agent Parser Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + isEncoded: + description: (Boolean) If the source attribute + is URL encoded or not. If the source + attribute is URL encoded or not. + type: boolean + name: + description: (String) Name of the processor + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + type: object + type: array + type: object + type: array + referenceTableLookupProcessor: + description: '(Block List, Max: 1) Reference Table Lookup + Processor. Reference Tables are in public beta. More information + can be found in the official docs (see below for nested + schema) Reference Table Lookup Processor. Reference Tables + are in public beta. More information can be found in the + [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + lookupEnrichmentTable: + description: (String) Name of the Reference Table + for the source attribute and their associated target + attribute values. Name of the Reference Table for + the source attribute and their associated target + attribute values. + type: string + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log attribute to + parse. Name of the source attribute used to do the + lookup. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the lookup. + type: string + type: object + type: array + serviceRemapper: + description: '(Block List, Max: 1) Service Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Service Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + statusRemapper: + description: '(Block List, Max: 1) Status Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Status Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + stringBuilderProcessor: + description: '(Block List, Max: 1) String Builder Processor. + More information can be found in the official docs (see + below for nested schema) String Builder Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces all missing + attributes of expression by 0, false skips the operation + if an attribute is missing. If it replaces all missing + attributes of template by an empty string. + type: boolean + name: + description: (String) The name of the processor. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. The name + of the attribute that contains the result of the + template. + type: string + template: + description: (String) The formula with one or more + attributes and raw text. The formula with one or + more attributes and raw text. + type: string + type: object + type: array + traceIdRemapper: + description: '(Block List, Max: 1) Trace ID Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Trace ID Remapper Processor. + More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + urlParser: + description: '(Block List, Max: 1) URL Parser Processor. + More information can be found in the official docs (see + below for nested schema) URL Parser Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + normalizeEndingSlashes: + description: (Boolean) Normalize the ending slashes + or not. Normalize the ending slashes or not. + type: boolean + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + userAgentParser: + description: Agent Parser Processor. More information can + be found in the official docs (see below for nested schema) + User-Agent Parser Processor. More information can be found + in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + isEncoded: + description: (Boolean) If the source attribute is + URL encoded or not. If the source attribute is URL + encoded or not. + type: boolean + name: + description: (String) Name of the processor + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + filter: + description: '(Block List, Min: 1) (see below for nested schema)' + items: + properties: + query: + description: (String) Filter criteria of the category. Filter + criteria of the category. + type: string + type: object + type: array + isEnabled: + description: (Boolean) + type: boolean + name: + description: (String) + type: string + processor: + description: (Block List) (see below for nested schema) + items: + properties: + arithmeticProcessor: + description: '(Block List, Max: 1) Arithmetic Processor. + More information can be found in the official docs (see + below for nested schema) Arithmetic Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)' + items: + properties: + expression: + description: (String) Arithmetic operation between + one or more log attributes. Arithmetic operation + between one or more log attributes. + type: string + isEnabled: + description: (Boolean) Boolean value to enable your + pipeline. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces all missing + attributes of expression by 0, false skips the operation + if an attribute is missing. If true, it replaces + all missing attributes of expression by 0, false + skips the operation if an attribute is missing. + type: boolean + name: + description: (String) Your pipeline name. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the arithmetic + operation. + type: string + type: object + type: array + attributeRemapper: + description: '(Block List, Max: 1) Attribute Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Attribute Remapper Processor. + More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + overrideOnConflict: + description: (Boolean) Override the target element + if already set. Override the target element if already + set. + type: boolean + preserveSource: + description: (Boolean) Remove or preserve the remapped + source element. Remove or preserve the remapped + source element. + type: boolean + sourceType: + description: (String) Defines where the sources are + from (log attribute or tag). Defines where the sources + are from (log `attribute` or `tag`). + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes or tags. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Final attribute + or tag name to remap the sources. + type: string + targetFormat: + description: (String) If the target_type of the remapper + is attribute, try to cast the value to a new specific + type. If the cast is not possible, the original + type is kept. string, integer, or double are the + possible types. If the target_type is tag, this + parameter may not be specified. If the `target_type` + of the remapper is `attribute`, try to cast the + value to a new specific type. If the cast is not + possible, the original type is kept. `string`, `integer`, + or `double` are the possible types. If the `target_type` + is `tag`, this parameter may not be specified. + type: string + targetType: + description: (String) Defines if the target is a log + attribute or tag. Defines if the target is a log + `attribute` or `tag`. + type: string + type: object + type: array + categoryProcessor: + description: '(Block List, Max: 1) Category Processor. More + information can be found in the official docs (see below + for nested schema) Category Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)' + items: + properties: + category: + description: '(Block List, Min: 1) List of filters + to match or exclude a log with their corresponding + name to assign a custom value to the log. (see below + for nested schema) List of filters to match or exclude + a log with their corresponding name to assign a + custom value to the log.' + items: + properties: + filter: + description: '(Block List, Min: 1) (see below + for nested schema)' + items: + properties: + query: + description: (String) Filter criteria + of the category. Filter criteria of + the category. + type: string + type: object + type: array + name: + description: (String) + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the category + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the target attribute whose value is defined by the + matching category. + type: string + type: object + type: array + dateRemapper: + description: '(Block List, Max: 1) Date Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Date Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + geoIpParser: + description: '(Block List, Max: 1) Date GeoIP Processor. + More information can be found in the official docs (see + below for nested schema) Date GeoIP Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + grokParser: + description: '(Block List, Max: 1) Grok Processor. More + information can be found in the official docs (see below + for nested schema) Grok Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)' + items: + properties: + grok: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + items: + properties: + matchRules: + description: (String) Match rules for your grok + parser. Match rules for your grok parser. + type: string + supportRules: + description: (String) Support rules for your + grok parser. Support rules for your grok parser. + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + samples: + description: (List of String) List of sample logs + for this parser. It can save up to 5 samples. Each + sample takes up to 5000 characters. List of sample + logs for this parser. It can save up to 5 samples. + Each sample takes up to 5000 characters. + items: + type: string + type: array + source: + description: (String) Name of the log attribute to + parse. Name of the log attribute to parse. + type: string + type: object + type: array + lookupProcessor: + description: '(Block List, Max: 1) Lookup Processor. More + information can be found in the official docs (see below + for nested schema) Lookup Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + defaultLookup: + description: (String) Default lookup value to use + if there is no entry in the lookup table for the + value of the source attribute. Default lookup value + to use if there is no entry in the lookup table + for the value of the source attribute. + type: string + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + lookupTable: + description: (List of String) List of entries of the + lookup table using key,value format. List of entries + of the lookup table using `key,value` format. + items: + type: string + type: array + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log attribute to + parse. Name of the source attribute used to do the + lookup. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the lookup. + type: string + type: object + type: array + messageRemapper: + description: '(Block List, Max: 1) Message Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Message Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + pipeline: + description: '(Block List, Max: 1) (see below for nested + schema)' + items: + properties: + filter: + description: '(Block List, Min: 1) (see below for + nested schema)' + items: + properties: + query: + description: (String) Filter criteria of the + category. Filter criteria of the category. + type: string + type: object + type: array + isEnabled: + description: (Boolean) + type: boolean + name: + description: (String) + type: string + processor: + description: (Block List) (see below for nested schema) + items: + properties: + arithmeticProcessor: + description: '(Block List, Max: 1) Arithmetic + Processor. More information can be found in + the official docs (see below for nested schema) + Arithmetic Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)' + items: + properties: + expression: + description: (String) Arithmetic operation + between one or more log attributes. + Arithmetic operation between one or + more log attributes. + type: string + isEnabled: + description: (Boolean) Boolean value to + enable your pipeline. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. + type: boolean + name: + description: (String) Your pipeline name. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the arithmetic + operation. + type: string + type: object + type: array + attributeRemapper: + description: '(Block List, Max: 1) Attribute + Remapper Processor. More information can be + found in the official docs (see below for + nested schema) Attribute Remapper Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + overrideOnConflict: + description: (Boolean) Override the target + element if already set. Override the + target element if already set. + type: boolean + preserveSource: + description: (Boolean) Remove or preserve + the remapped source element. Remove + or preserve the remapped source element. + type: boolean + sourceType: + description: (String) Defines where the + sources are from (log attribute or tag). + Defines where the sources are from (log + `attribute` or `tag`). + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes or tags. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Final attribute or tag name + to remap the sources. + type: string + targetFormat: + description: (String) If the target_type + of the remapper is attribute, try to + cast the value to a new specific type. + If the cast is not possible, the original + type is kept. string, integer, or double + are the possible types. If the target_type + is tag, this parameter may not be specified. + If the `target_type` of the remapper + is `attribute`, try to cast the value + to a new specific type. If the cast + is not possible, the original type is + kept. `string`, `integer`, or `double` + are the possible types. If the `target_type` + is `tag`, this parameter may not be + specified. + type: string + targetType: + description: (String) Defines if the target + is a log attribute or tag. Defines if + the target is a log `attribute` or `tag`. + type: string + type: object + type: array + categoryProcessor: + description: '(Block List, Max: 1) Category + Processor. More information can be found in + the official docs (see below for nested schema) + Category Processor. More information can be + found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)' + items: + properties: + category: + description: '(Block List, Min: 1) List + of filters to match or exclude a log + with their corresponding name to assign + a custom value to the log. (see below + for nested schema) List of filters to + match or exclude a log with their corresponding + name to assign a custom value to the + log.' + items: + properties: + filter: + description: '(Block List, Min: + 1) (see below for nested schema)' + items: + properties: + query: + description: (String) Filter + criteria of the category. + Filter criteria of the category. + type: string + type: object + type: array + name: + description: (String) + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the category + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the target attribute + whose value is defined by the matching + category. + type: string + type: object + type: array + dateRemapper: + description: '(Block List, Max: 1) Date Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Date Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + geoIpParser: + description: '(Block List, Max: 1) Date GeoIP + Processor. More information can be found in + the official docs (see below for nested schema) + Date GeoIP Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + grokParser: + description: '(Block List, Max: 1) Grok Processor. + More information can be found in the official + docs (see below for nested schema) Grok Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)' + items: + properties: + grok: + description: '(Block List, Min: 1, Max: + 1) (see below for nested schema)' + items: + properties: + matchRules: + description: (String) Match rules + for your grok parser. Match rules + for your grok parser. + type: string + supportRules: + description: (String) Support rules + for your grok parser. Support + rules for your grok parser. + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + samples: + description: (List of String) List of + sample logs for this parser. It can + save up to 5 samples. Each sample takes + up to 5000 characters. List of sample + logs for this parser. It can save up + to 5 samples. Each sample takes up to + 5000 characters. + items: + type: string + type: array + source: + description: (String) Name of the log + attribute to parse. Name of the log + attribute to parse. + type: string + type: object + type: array + lookupProcessor: + description: '(Block List, Max: 1) Lookup Processor. + More information can be found in the official + docs (see below for nested schema) Lookup + Processor. More information can be found in + the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + defaultLookup: + description: (String) Default lookup value + to use if there is no entry in the lookup + table for the value of the source attribute. + Default lookup value to use if there + is no entry in the lookup table for + the value of the source attribute. + type: string + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + lookupTable: + description: (List of String) List of + entries of the lookup table using key,value + format. List of entries of the lookup + table using `key,value` format. + items: + type: string + type: array + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log + attribute to parse. Name of the source + attribute used to do the lookup. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the lookup. + type: string + type: object + type: array + messageRemapper: + description: '(Block List, Max: 1) Message Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Message Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + referenceTableLookupProcessor: + description: '(Block List, Max: 1) Reference + Table Lookup Processor. Reference Tables are + in public beta. More information can be found + in the official docs (see below for nested + schema) Reference Table Lookup Processor. + Reference Tables are in public beta. More + information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + lookupEnrichmentTable: + description: (String) Name of the Reference + Table for the source attribute and their + associated target attribute values. + Name of the Reference Table for the + source attribute and their associated + target attribute values. + type: string + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log + attribute to parse. Name of the source + attribute used to do the lookup. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the lookup. + type: string + type: object + type: array + serviceRemapper: + description: '(Block List, Max: 1) Service Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Service Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + statusRemapper: + description: '(Block List, Max: 1) Status Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Status Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + stringBuilderProcessor: + description: '(Block List, Max: 1) String Builder + Processor. More information can be found in + the official docs (see below for nested schema) + String Builder Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. If it replaces + all missing attributes of template by + an empty string. + type: boolean + name: + description: (String) The name of the + processor. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. The name of the attribute + that contains the result of the template. + type: string + template: + description: (String) The formula with + one or more attributes and raw text. + The formula with one or more attributes + and raw text. + type: string + type: object + type: array + traceIdRemapper: + description: '(Block List, Max: 1) Trace ID + Remapper Processor. More information can be + found in the official docs (see below for + nested schema) Trace ID Remapper Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + urlParser: + description: '(Block List, Max: 1) URL Parser + Processor. More information can be found in + the official docs (see below for nested schema) + URL Parser Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + normalizeEndingSlashes: + description: (Boolean) Normalize the ending + slashes or not. Normalize the ending + slashes or not. + type: boolean + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + userAgentParser: + description: Agent Parser Processor. More information + can be found in the official docs (see below + for nested schema) User-Agent Parser Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + isEncoded: + description: (Boolean) If the source attribute + is URL encoded or not. If the source + attribute is URL encoded or not. + type: boolean + name: + description: (String) Name of the processor + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + type: object + type: array + type: object + type: array + referenceTableLookupProcessor: + description: '(Block List, Max: 1) Reference Table Lookup + Processor. Reference Tables are in public beta. More information + can be found in the official docs (see below for nested + schema) Reference Table Lookup Processor. Reference Tables + are in public beta. More information can be found in the + [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + lookupEnrichmentTable: + description: (String) Name of the Reference Table + for the source attribute and their associated target + attribute values. Name of the Reference Table for + the source attribute and their associated target + attribute values. + type: string + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log attribute to + parse. Name of the source attribute used to do the + lookup. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the lookup. + type: string + type: object + type: array + serviceRemapper: + description: '(Block List, Max: 1) Service Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Service Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + statusRemapper: + description: '(Block List, Max: 1) Status Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Status Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + stringBuilderProcessor: + description: '(Block List, Max: 1) String Builder Processor. + More information can be found in the official docs (see + below for nested schema) String Builder Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces all missing + attributes of expression by 0, false skips the operation + if an attribute is missing. If it replaces all missing + attributes of template by an empty string. + type: boolean + name: + description: (String) The name of the processor. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. The name + of the attribute that contains the result of the + template. + type: string + template: + description: (String) The formula with one or more + attributes and raw text. The formula with one or + more attributes and raw text. + type: string + type: object + type: array + traceIdRemapper: + description: '(Block List, Max: 1) Trace ID Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Trace ID Remapper Processor. + More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + urlParser: + description: '(Block List, Max: 1) URL Parser Processor. + More information can be found in the official docs (see + below for nested schema) URL Parser Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + normalizeEndingSlashes: + description: (Boolean) Normalize the ending slashes + or not. Normalize the ending slashes or not. + type: boolean + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + userAgentParser: + description: Agent Parser Processor. More information can + be found in the official docs (see below for nested schema) + User-Agent Parser Processor. More information can be found + in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + isEncoded: + description: (Boolean) If the source attribute is + URL encoded or not. If the source attribute is URL + encoded or not. + type: boolean + name: + description: (String) Name of the processor + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.filter is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.filter) + || (has(self.initProvider) && has(self.initProvider.filter))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: CustomPipelineStatus defines the observed state of CustomPipeline. + properties: + atProvider: + properties: + filter: + description: '(Block List, Min: 1) (see below for nested schema)' + items: + properties: + query: + description: (String) Filter criteria of the category. Filter + criteria of the category. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + isEnabled: + description: (Boolean) + type: boolean + name: + description: (String) + type: string + processor: + description: (Block List) (see below for nested schema) + items: + properties: + arithmeticProcessor: + description: '(Block List, Max: 1) Arithmetic Processor. + More information can be found in the official docs (see + below for nested schema) Arithmetic Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)' + items: + properties: + expression: + description: (String) Arithmetic operation between + one or more log attributes. Arithmetic operation + between one or more log attributes. + type: string + isEnabled: + description: (Boolean) Boolean value to enable your + pipeline. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces all missing + attributes of expression by 0, false skips the operation + if an attribute is missing. If true, it replaces + all missing attributes of expression by 0, false + skips the operation if an attribute is missing. + type: boolean + name: + description: (String) Your pipeline name. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the arithmetic + operation. + type: string + type: object + type: array + attributeRemapper: + description: '(Block List, Max: 1) Attribute Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Attribute Remapper Processor. + More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + overrideOnConflict: + description: (Boolean) Override the target element + if already set. Override the target element if already + set. + type: boolean + preserveSource: + description: (Boolean) Remove or preserve the remapped + source element. Remove or preserve the remapped + source element. + type: boolean + sourceType: + description: (String) Defines where the sources are + from (log attribute or tag). Defines where the sources + are from (log `attribute` or `tag`). + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes or tags. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Final attribute + or tag name to remap the sources. + type: string + targetFormat: + description: (String) If the target_type of the remapper + is attribute, try to cast the value to a new specific + type. If the cast is not possible, the original + type is kept. string, integer, or double are the + possible types. If the target_type is tag, this + parameter may not be specified. If the `target_type` + of the remapper is `attribute`, try to cast the + value to a new specific type. If the cast is not + possible, the original type is kept. `string`, `integer`, + or `double` are the possible types. If the `target_type` + is `tag`, this parameter may not be specified. + type: string + targetType: + description: (String) Defines if the target is a log + attribute or tag. Defines if the target is a log + `attribute` or `tag`. + type: string + type: object + type: array + categoryProcessor: + description: '(Block List, Max: 1) Category Processor. More + information can be found in the official docs (see below + for nested schema) Category Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)' + items: + properties: + category: + description: '(Block List, Min: 1) List of filters + to match or exclude a log with their corresponding + name to assign a custom value to the log. (see below + for nested schema) List of filters to match or exclude + a log with their corresponding name to assign a + custom value to the log.' + items: + properties: + filter: + description: '(Block List, Min: 1) (see below + for nested schema)' + items: + properties: + query: + description: (String) Filter criteria + of the category. Filter criteria of + the category. + type: string + type: object + type: array + name: + description: (String) + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the category + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the target attribute whose value is defined by the + matching category. + type: string + type: object + type: array + dateRemapper: + description: '(Block List, Max: 1) Date Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Date Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + geoIpParser: + description: '(Block List, Max: 1) Date GeoIP Processor. + More information can be found in the official docs (see + below for nested schema) Date GeoIP Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + grokParser: + description: '(Block List, Max: 1) Grok Processor. More + information can be found in the official docs (see below + for nested schema) Grok Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)' + items: + properties: + grok: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + items: + properties: + matchRules: + description: (String) Match rules for your grok + parser. Match rules for your grok parser. + type: string + supportRules: + description: (String) Support rules for your + grok parser. Support rules for your grok parser. + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + samples: + description: (List of String) List of sample logs + for this parser. It can save up to 5 samples. Each + sample takes up to 5000 characters. List of sample + logs for this parser. It can save up to 5 samples. + Each sample takes up to 5000 characters. + items: + type: string + type: array + source: + description: (String) Name of the log attribute to + parse. Name of the log attribute to parse. + type: string + type: object + type: array + lookupProcessor: + description: '(Block List, Max: 1) Lookup Processor. More + information can be found in the official docs (see below + for nested schema) Lookup Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + defaultLookup: + description: (String) Default lookup value to use + if there is no entry in the lookup table for the + value of the source attribute. Default lookup value + to use if there is no entry in the lookup table + for the value of the source attribute. + type: string + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + lookupTable: + description: (List of String) List of entries of the + lookup table using key,value format. List of entries + of the lookup table using `key,value` format. + items: + type: string + type: array + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log attribute to + parse. Name of the source attribute used to do the + lookup. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the lookup. + type: string + type: object + type: array + messageRemapper: + description: '(Block List, Max: 1) Message Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Message Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + pipeline: + description: '(Block List, Max: 1) (see below for nested + schema)' + items: + properties: + filter: + description: '(Block List, Min: 1) (see below for + nested schema)' + items: + properties: + query: + description: (String) Filter criteria of the + category. Filter criteria of the category. + type: string + type: object + type: array + isEnabled: + description: (Boolean) + type: boolean + name: + description: (String) + type: string + processor: + description: (Block List) (see below for nested schema) + items: + properties: + arithmeticProcessor: + description: '(Block List, Max: 1) Arithmetic + Processor. More information can be found in + the official docs (see below for nested schema) + Arithmetic Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#arithmetic-processor)' + items: + properties: + expression: + description: (String) Arithmetic operation + between one or more log attributes. + Arithmetic operation between one or + more log attributes. + type: string + isEnabled: + description: (Boolean) Boolean value to + enable your pipeline. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. + type: boolean + name: + description: (String) Your pipeline name. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the arithmetic + operation. + type: string + type: object + type: array + attributeRemapper: + description: '(Block List, Max: 1) Attribute + Remapper Processor. More information can be + found in the official docs (see below for + nested schema) Attribute Remapper Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + overrideOnConflict: + description: (Boolean) Override the target + element if already set. Override the + target element if already set. + type: boolean + preserveSource: + description: (Boolean) Remove or preserve + the remapped source element. Remove + or preserve the remapped source element. + type: boolean + sourceType: + description: (String) Defines where the + sources are from (log attribute or tag). + Defines where the sources are from (log + `attribute` or `tag`). + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes or tags. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Final attribute or tag name + to remap the sources. + type: string + targetFormat: + description: (String) If the target_type + of the remapper is attribute, try to + cast the value to a new specific type. + If the cast is not possible, the original + type is kept. string, integer, or double + are the possible types. If the target_type + is tag, this parameter may not be specified. + If the `target_type` of the remapper + is `attribute`, try to cast the value + to a new specific type. If the cast + is not possible, the original type is + kept. `string`, `integer`, or `double` + are the possible types. If the `target_type` + is `tag`, this parameter may not be + specified. + type: string + targetType: + description: (String) Defines if the target + is a log attribute or tag. Defines if + the target is a log `attribute` or `tag`. + type: string + type: object + type: array + categoryProcessor: + description: '(Block List, Max: 1) Category + Processor. More information can be found in + the official docs (see below for nested schema) + Category Processor. More information can be + found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#category-processor)' + items: + properties: + category: + description: '(Block List, Min: 1) List + of filters to match or exclude a log + with their corresponding name to assign + a custom value to the log. (see below + for nested schema) List of filters to + match or exclude a log with their corresponding + name to assign a custom value to the + log.' + items: + properties: + filter: + description: '(Block List, Min: + 1) (see below for nested schema)' + items: + properties: + query: + description: (String) Filter + criteria of the category. + Filter criteria of the category. + type: string + type: object + type: array + name: + description: (String) + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the category + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the target attribute + whose value is defined by the matching + category. + type: string + type: object + type: array + dateRemapper: + description: '(Block List, Max: 1) Date Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Date Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-date-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + geoIpParser: + description: '(Block List, Max: 1) Date GeoIP + Processor. More information can be found in + the official docs (see below for nested schema) + Date GeoIP Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#geoip-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + grokParser: + description: '(Block List, Max: 1) Grok Processor. + More information can be found in the official + docs (see below for nested schema) Grok Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#grok-parser)' + items: + properties: + grok: + description: '(Block List, Min: 1, Max: + 1) (see below for nested schema)' + items: + properties: + matchRules: + description: (String) Match rules + for your grok parser. Match rules + for your grok parser. + type: string + supportRules: + description: (String) Support rules + for your grok parser. Support + rules for your grok parser. + type: string + type: object + type: array + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + samples: + description: (List of String) List of + sample logs for this parser. It can + save up to 5 samples. Each sample takes + up to 5000 characters. List of sample + logs for this parser. It can save up + to 5 samples. Each sample takes up to + 5000 characters. + items: + type: string + type: array + source: + description: (String) Name of the log + attribute to parse. Name of the log + attribute to parse. + type: string + type: object + type: array + lookupProcessor: + description: '(Block List, Max: 1) Lookup Processor. + More information can be found in the official + docs (see below for nested schema) Lookup + Processor. More information can be found in + the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + defaultLookup: + description: (String) Default lookup value + to use if there is no entry in the lookup + table for the value of the source attribute. + Default lookup value to use if there + is no entry in the lookup table for + the value of the source attribute. + type: string + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + lookupTable: + description: (List of String) List of + entries of the lookup table using key,value + format. List of entries of the lookup + table using `key,value` format. + items: + type: string + type: array + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log + attribute to parse. Name of the source + attribute used to do the lookup. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the lookup. + type: string + type: object + type: array + messageRemapper: + description: '(Block List, Max: 1) Message Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Message Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-message-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + referenceTableLookupProcessor: + description: '(Block List, Max: 1) Reference + Table Lookup Processor. Reference Tables are + in public beta. More information can be found + in the official docs (see below for nested + schema) Reference Table Lookup Processor. + Reference Tables are in public beta. More + information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + lookupEnrichmentTable: + description: (String) Name of the Reference + Table for the source attribute and their + associated target attribute values. + Name of the Reference Table for the + source attribute and their associated + target attribute values. + type: string + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log + attribute to parse. Name of the source + attribute used to do the lookup. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the attribute that + contains the result of the lookup. + type: string + type: object + type: array + serviceRemapper: + description: '(Block List, Max: 1) Service Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Service Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + statusRemapper: + description: '(Block List, Max: 1) Status Remapper + Processor. More information can be found in + the official docs (see below for nested schema) + Status Remapper Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + stringBuilderProcessor: + description: '(Block List, Max: 1) String Builder + Processor. More information can be found in + the official docs (see below for nested schema) + String Builder Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces + all missing attributes of expression + by 0, false skips the operation if an + attribute is missing. If it replaces + all missing attributes of template by + an empty string. + type: boolean + name: + description: (String) The name of the + processor. + type: string + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. The name of the attribute + that contains the result of the template. + type: string + template: + description: (String) The formula with + one or more attributes and raw text. + The formula with one or more attributes + and raw text. + type: string + type: object + type: array + traceIdRemapper: + description: '(Block List, Max: 1) Trace ID + Remapper Processor. More information can be + found in the official docs (see below for + nested schema) Trace ID Remapper Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + type: object + type: array + urlParser: + description: '(Block List, Max: 1) URL Parser + Processor. More information can be found in + the official docs (see below for nested schema) + URL Parser Processor. More information can + be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + name: + description: (String) Name of the processor + type: string + normalizeEndingSlashes: + description: (Boolean) Normalize the ending + slashes or not. Normalize the ending + slashes or not. + type: boolean + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + userAgentParser: + description: Agent Parser Processor. More information + can be found in the official docs (see below + for nested schema) User-Agent Parser Processor. + More information can be found in the [official + docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + items: + properties: + isEnabled: + description: (Boolean) If the processor + is enabled or not. + type: boolean + isEncoded: + description: (Boolean) If the source attribute + is URL encoded or not. If the source + attribute is URL encoded or not. + type: boolean + name: + description: (String) Name of the processor + type: string + sources: + description: (List of String) List of + source attributes or tags. List of source + attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute + that contains the result of the arithmetic + operation. Name of the parent attribute + that contains all the extracted details + from the sources. + type: string + type: object + type: array + type: object + type: array + type: object + type: array + referenceTableLookupProcessor: + description: '(Block List, Max: 1) Reference Table Lookup + Processor. Reference Tables are in public beta. More information + can be found in the official docs (see below for nested + schema) Reference Table Lookup Processor. Reference Tables + are in public beta. More information can be found in the + [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#lookup-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + lookupEnrichmentTable: + description: (String) Name of the Reference Table + for the source attribute and their associated target + attribute values. Name of the Reference Table for + the source attribute and their associated target + attribute values. + type: string + name: + description: (String) Name of the processor + type: string + source: + description: (String) Name of the log attribute to + parse. Name of the source attribute used to do the + lookup. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the attribute that contains the result of the lookup. + type: string + type: object + type: array + serviceRemapper: + description: '(Block List, Max: 1) Service Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Service Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#service-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + statusRemapper: + description: '(Block List, Max: 1) Status Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Status Remapper Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#log-status-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + stringBuilderProcessor: + description: '(Block List, Max: 1) String Builder Processor. + More information can be found in the official docs (see + below for nested schema) String Builder Processor. More + information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#string-builder-processor)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + isReplaceMissing: + description: (Boolean) If true, it replaces all missing + attributes of expression by 0, false skips the operation + if an attribute is missing. If it replaces all missing + attributes of template by an empty string. + type: boolean + name: + description: (String) The name of the processor. + type: string + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. The name + of the attribute that contains the result of the + template. + type: string + template: + description: (String) The formula with one or more + attributes and raw text. The formula with one or + more attributes and raw text. + type: string + type: object + type: array + traceIdRemapper: + description: '(Block List, Max: 1) Trace ID Remapper Processor. + More information can be found in the official docs (see + below for nested schema) Trace ID Remapper Processor. + More information can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#trace-remapper)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor. + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + type: object + type: array + urlParser: + description: '(Block List, Max: 1) URL Parser Processor. + More information can be found in the official docs (see + below for nested schema) URL Parser Processor. More information + can be found in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#url-parser)' + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + name: + description: (String) Name of the processor + type: string + normalizeEndingSlashes: + description: (Boolean) Normalize the ending slashes + or not. Normalize the ending slashes or not. + type: boolean + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + userAgentParser: + description: Agent Parser Processor. More information can + be found in the official docs (see below for nested schema) + User-Agent Parser Processor. More information can be found + in the [official docs](https://docs.datadoghq.com/logs/processing/processors/?tab=ui#user-agent-parser) + items: + properties: + isEnabled: + description: (Boolean) If the processor is enabled + or not. + type: boolean + isEncoded: + description: (Boolean) If the source attribute is + URL encoded or not. If the source attribute is URL + encoded or not. + type: boolean + name: + description: (String) Name of the processor + type: string + sources: + description: (List of String) List of source attributes + or tags. List of source attributes. + items: + type: string + type: array + target: + description: (String) Name of the attribute that contains + the result of the arithmetic operation. Name of + the parent attribute that contains all the extracted + details from the sources. + type: string + type: object + type: array + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_indexorders.yaml b/package/crds/logs.datadog.upbound.io_indexorders.yaml new file mode 100644 index 0000000..c16cb94 --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_indexorders.yaml @@ -0,0 +1,341 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: indexorders.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: IndexOrder + listKind: IndexOrderList + plural: indexorders + singular: indexorder + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: IndexOrder is the Schema for the IndexOrders API. Provides a + Datadog Logs Index API resource. This can be used to manage the order of + Datadog logs indexes. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IndexOrderSpec defines the desired state of IndexOrder + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + indexes: + description: (List of String) The index resource list. Logs are + tested against the query filter of each index one by one following + the order of the list. The index resource list. Logs are tested + against the query filter of each index one by one following + the order of the list. + items: + type: string + type: array + name: + description: (String) The unique name of the index order resource. + The unique name of the index order resource. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + indexes: + description: (List of String) The index resource list. Logs are + tested against the query filter of each index one by one following + the order of the list. The index resource list. Logs are tested + against the query filter of each index one by one following + the order of the list. + items: + type: string + type: array + name: + description: (String) The unique name of the index order resource. + The unique name of the index order resource. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.indexes is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.indexes) + || (has(self.initProvider) && has(self.initProvider.indexes))' + status: + description: IndexOrderStatus defines the observed state of IndexOrder. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + indexes: + description: (List of String) The index resource list. Logs are + tested against the query filter of each index one by one following + the order of the list. The index resource list. Logs are tested + against the query filter of each index one by one following + the order of the list. + items: + type: string + type: array + name: + description: (String) The unique name of the index order resource. + The unique name of the index order resource. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_indices.yaml b/package/crds/logs.datadog.upbound.io_indices.yaml new file mode 100644 index 0000000..8f97801 --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_indices.yaml @@ -0,0 +1,603 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: indices.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Index + listKind: IndexList + plural: indices + singular: index + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Index is the Schema for the Indexs API. Provides a Datadog Logs + Index API resource. This can be used to create and manage Datadog logs indexes. + Reach out to support to delete a logs index. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IndexSpec defines the desired state of Index + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + dailyLimit: + description: limited. The number of log events you can send in + this index per day before you are rate-limited. + type: number + dailyLimitReset: + description: '(Block List, Max: 1) Object containing options to + override the default daily limit reset time. (see below for + nested schema) Object containing options to override the default + daily limit reset time.' + items: + properties: + resetTime: + description: (String) String in HH:00 format representing + the time of day the daily limit should be reset. The hours + must be between 00 and 23 (inclusive). String in `HH:00` + format representing the time of day the daily limit should + be reset. The hours must be between 00 and 23 (inclusive). + type: string + resetUtcOffset: + description: '|+)HH:00 format representing the UTC offset + to apply to the given reset time. The hours must be between + -12 and +14 (inclusive). String in `(-|+)HH:00` format + representing the UTC offset to apply to the given reset + time. The hours must be between -12 and +14 (inclusive).' + type: string + type: object + type: array + dailyLimitWarningThresholdPercentage: + description: (Number) A percentage threshold of the daily quota + at which a Datadog warning event is generated. A percentage + threshold of the daily quota at which a Datadog warning event + is generated. + type: number + disableDailyLimit: + description: (Boolean) If true, sets the daily_limit value to + null and the index is not limited on a daily basis (any specified + daily_limit value in the request is ignored). If false or omitted, + the index's current daily_limit is maintained. If true, sets + the daily_limit value to null and the index is not limited on + a daily basis (any specified daily_limit value in the request + is ignored). If false or omitted, the index's current daily_limit + is maintained. + type: boolean + exclusionFilter: + description: (Block List) List of exclusion filters. (see below + for nested schema) List of exclusion filters. + items: + properties: + filter: + description: '(Block List, Min: 1, Max: 1) Logs filter (see + below for nested schema)' + items: + properties: + query: + description: (String) Logs filter criteria. Only logs + matching this filter criteria are considered for + this index. Only logs matching the filter criteria + and the query of the parent index will be considered + for this exclusion filter. + type: string + sampleRate: + description: (Number) The fraction of logs excluded + by the exclusion filter, when active. The fraction + of logs excluded by the exclusion filter, when active. + type: number + type: object + type: array + isEnabled: + description: (Boolean) A boolean stating if the exclusion + is active or not. A boolean stating if the exclusion is + active or not. + type: boolean + name: + description: (String) The name of the index. The name of + the exclusion filter. + type: string + type: object + type: array + filter: + description: '(Block List, Min: 1, Max: 1) Logs filter (see below + for nested schema) Logs filter' + items: + properties: + query: + description: (String) Logs filter criteria. Only logs matching + this filter criteria are considered for this index. Logs + filter criteria. Only logs matching this filter criteria + are considered for this index. + type: string + type: object + type: array + name: + description: (String) The name of the index. The name of the index. + type: string + retentionDays: + description: (Number) The number of days before logs are deleted + from this index. The number of days before logs are deleted + from this index. + type: number + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + dailyLimit: + description: limited. The number of log events you can send in + this index per day before you are rate-limited. + type: number + dailyLimitReset: + description: '(Block List, Max: 1) Object containing options to + override the default daily limit reset time. (see below for + nested schema) Object containing options to override the default + daily limit reset time.' + items: + properties: + resetTime: + description: (String) String in HH:00 format representing + the time of day the daily limit should be reset. The hours + must be between 00 and 23 (inclusive). String in `HH:00` + format representing the time of day the daily limit should + be reset. The hours must be between 00 and 23 (inclusive). + type: string + resetUtcOffset: + description: '|+)HH:00 format representing the UTC offset + to apply to the given reset time. The hours must be between + -12 and +14 (inclusive). String in `(-|+)HH:00` format + representing the UTC offset to apply to the given reset + time. The hours must be between -12 and +14 (inclusive).' + type: string + type: object + type: array + dailyLimitWarningThresholdPercentage: + description: (Number) A percentage threshold of the daily quota + at which a Datadog warning event is generated. A percentage + threshold of the daily quota at which a Datadog warning event + is generated. + type: number + disableDailyLimit: + description: (Boolean) If true, sets the daily_limit value to + null and the index is not limited on a daily basis (any specified + daily_limit value in the request is ignored). If false or omitted, + the index's current daily_limit is maintained. If true, sets + the daily_limit value to null and the index is not limited on + a daily basis (any specified daily_limit value in the request + is ignored). If false or omitted, the index's current daily_limit + is maintained. + type: boolean + exclusionFilter: + description: (Block List) List of exclusion filters. (see below + for nested schema) List of exclusion filters. + items: + properties: + filter: + description: '(Block List, Min: 1, Max: 1) Logs filter (see + below for nested schema)' + items: + properties: + query: + description: (String) Logs filter criteria. Only logs + matching this filter criteria are considered for + this index. Only logs matching the filter criteria + and the query of the parent index will be considered + for this exclusion filter. + type: string + sampleRate: + description: (Number) The fraction of logs excluded + by the exclusion filter, when active. The fraction + of logs excluded by the exclusion filter, when active. + type: number + type: object + type: array + isEnabled: + description: (Boolean) A boolean stating if the exclusion + is active or not. A boolean stating if the exclusion is + active or not. + type: boolean + name: + description: (String) The name of the index. The name of + the exclusion filter. + type: string + type: object + type: array + filter: + description: '(Block List, Min: 1, Max: 1) Logs filter (see below + for nested schema) Logs filter' + items: + properties: + query: + description: (String) Logs filter criteria. Only logs matching + this filter criteria are considered for this index. Logs + filter criteria. Only logs matching this filter criteria + are considered for this index. + type: string + type: object + type: array + name: + description: (String) The name of the index. The name of the index. + type: string + retentionDays: + description: (Number) The number of days before logs are deleted + from this index. The number of days before logs are deleted + from this index. + type: number + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.filter is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.filter) + || (has(self.initProvider) && has(self.initProvider.filter))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: IndexStatus defines the observed state of Index. + properties: + atProvider: + properties: + dailyLimit: + description: limited. The number of log events you can send in + this index per day before you are rate-limited. + type: number + dailyLimitReset: + description: '(Block List, Max: 1) Object containing options to + override the default daily limit reset time. (see below for + nested schema) Object containing options to override the default + daily limit reset time.' + items: + properties: + resetTime: + description: (String) String in HH:00 format representing + the time of day the daily limit should be reset. The hours + must be between 00 and 23 (inclusive). String in `HH:00` + format representing the time of day the daily limit should + be reset. The hours must be between 00 and 23 (inclusive). + type: string + resetUtcOffset: + description: '|+)HH:00 format representing the UTC offset + to apply to the given reset time. The hours must be between + -12 and +14 (inclusive). String in `(-|+)HH:00` format + representing the UTC offset to apply to the given reset + time. The hours must be between -12 and +14 (inclusive).' + type: string + type: object + type: array + dailyLimitWarningThresholdPercentage: + description: (Number) A percentage threshold of the daily quota + at which a Datadog warning event is generated. A percentage + threshold of the daily quota at which a Datadog warning event + is generated. + type: number + disableDailyLimit: + description: (Boolean) If true, sets the daily_limit value to + null and the index is not limited on a daily basis (any specified + daily_limit value in the request is ignored). If false or omitted, + the index's current daily_limit is maintained. If true, sets + the daily_limit value to null and the index is not limited on + a daily basis (any specified daily_limit value in the request + is ignored). If false or omitted, the index's current daily_limit + is maintained. + type: boolean + exclusionFilter: + description: (Block List) List of exclusion filters. (see below + for nested schema) List of exclusion filters. + items: + properties: + filter: + description: '(Block List, Min: 1, Max: 1) Logs filter (see + below for nested schema)' + items: + properties: + query: + description: (String) Logs filter criteria. Only logs + matching this filter criteria are considered for + this index. Only logs matching the filter criteria + and the query of the parent index will be considered + for this exclusion filter. + type: string + sampleRate: + description: (Number) The fraction of logs excluded + by the exclusion filter, when active. The fraction + of logs excluded by the exclusion filter, when active. + type: number + type: object + type: array + isEnabled: + description: (Boolean) A boolean stating if the exclusion + is active or not. A boolean stating if the exclusion is + active or not. + type: boolean + name: + description: (String) The name of the index. The name of + the exclusion filter. + type: string + type: object + type: array + filter: + description: '(Block List, Min: 1, Max: 1) Logs filter (see below + for nested schema) Logs filter' + items: + properties: + query: + description: (String) Logs filter criteria. Only logs matching + this filter criteria are considered for this index. Logs + filter criteria. Only logs matching this filter criteria + are considered for this index. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name of the index. The name of the index. + type: string + retentionDays: + description: (Number) The number of days before logs are deleted + from this index. The number of days before logs are deleted + from this index. + type: number + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_integrationpipelines.yaml b/package/crds/logs.datadog.upbound.io_integrationpipelines.yaml new file mode 100644 index 0000000..263611b --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_integrationpipelines.yaml @@ -0,0 +1,314 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: integrationpipelines.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: IntegrationPipeline + listKind: IntegrationPipelineList + plural: integrationpipelines + singular: integrationpipeline + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: IntegrationPipeline is the Schema for the IntegrationPipelines + API. Provides a Datadog Logs Pipeline API resource to manage the integrations. + Integration pipelines are the pipelines that are automatically installed + for your organization when sending the logs with specific sources. You don't + need to maintain or update these types of pipelines. Keeping them as resources, + however, allows you to manage the order of your pipelines by referencing + them in your datadog_logs_pipeline_order resource. If you don't need the + pipeline_order feature, this resource declaration can be omitted. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: IntegrationPipelineSpec defines the desired state of IntegrationPipeline + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + isEnabled: + description: (Boolean) Boolean value to enable your pipeline. + Boolean value to enable your pipeline. + type: boolean + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + isEnabled: + description: (Boolean) Boolean value to enable your pipeline. + Boolean value to enable your pipeline. + type: boolean + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: IntegrationPipelineStatus defines the observed state of IntegrationPipeline. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + isEnabled: + description: (Boolean) Boolean value to enable your pipeline. + Boolean value to enable your pipeline. + type: boolean + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_metrics.yaml b/package/crds/logs.datadog.upbound.io_metrics.yaml new file mode 100644 index 0000000..3a7a9a0 --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_metrics.yaml @@ -0,0 +1,510 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: metrics.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Metric + listKind: MetricList + plural: metrics + singular: metric + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Metric is the Schema for the Metrics API. Resource for interacting + with the logs_metric API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MetricSpec defines the desired state of Metric + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + compute: + description: based metric. This field can't be updated after creation. + (see below for nested schema) The compute rule to compute the + log-based metric. This field can't be updated after creation. + items: + properties: + aggregationType: + description: (String) The type of aggregation to use. This + field can't be updated after creation. Valid values are + count, distribution. The type of aggregation to use. This + field can't be updated after creation. Valid values are + `count`, `distribution`. + type: string + includePercentiles: + description: (Boolean) Toggle to include/exclude percentiles + for a distribution metric. Defaults to false. Can only + be applied to metrics that have an aggregation_type of + distribution. Toggle to include/exclude percentiles for + a distribution metric. Defaults to false. Can only be + applied to metrics that have an `aggregation_type` of + distribution. + type: boolean + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the log-based metric will aggregate on (only used if the + aggregation type is a "distribution"). This field can't + be updated after creation. + type: string + type: object + type: array + filter: + description: based metric filter. Logs matching this filter will + be aggregated in this metric. (see below for nested schema) + The log-based metric filter. Logs matching this filter will + be aggregated in this metric. + items: + properties: + query: + description: following the log search syntax. The search + query - following the log search syntax. + type: string + type: object + type: array + groupBy: + description: (Block Set) The rules for the group by. (see below + for nested schema) The rules for the group by. + items: + properties: + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the log-based metric will be aggregated over. + type: string + tagName: + description: (String) Name of the tag that gets created. + Name of the tag that gets created. + type: string + type: object + type: array + name: + description: based metric. This field can't be updated after creation. + The name of the log-based metric. This field can't be updated + after creation. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + compute: + description: based metric. This field can't be updated after creation. + (see below for nested schema) The compute rule to compute the + log-based metric. This field can't be updated after creation. + items: + properties: + aggregationType: + description: (String) The type of aggregation to use. This + field can't be updated after creation. Valid values are + count, distribution. The type of aggregation to use. This + field can't be updated after creation. Valid values are + `count`, `distribution`. + type: string + includePercentiles: + description: (Boolean) Toggle to include/exclude percentiles + for a distribution metric. Defaults to false. Can only + be applied to metrics that have an aggregation_type of + distribution. Toggle to include/exclude percentiles for + a distribution metric. Defaults to false. Can only be + applied to metrics that have an `aggregation_type` of + distribution. + type: boolean + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the log-based metric will aggregate on (only used if the + aggregation type is a "distribution"). This field can't + be updated after creation. + type: string + type: object + type: array + filter: + description: based metric filter. Logs matching this filter will + be aggregated in this metric. (see below for nested schema) + The log-based metric filter. Logs matching this filter will + be aggregated in this metric. + items: + properties: + query: + description: following the log search syntax. The search + query - following the log search syntax. + type: string + type: object + type: array + groupBy: + description: (Block Set) The rules for the group by. (see below + for nested schema) The rules for the group by. + items: + properties: + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the log-based metric will be aggregated over. + type: string + tagName: + description: (String) Name of the tag that gets created. + Name of the tag that gets created. + type: string + type: object + type: array + name: + description: based metric. This field can't be updated after creation. + The name of the log-based metric. This field can't be updated + after creation. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.compute is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.compute) + || (has(self.initProvider) && has(self.initProvider.compute))' + - message: spec.forProvider.filter is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.filter) + || (has(self.initProvider) && has(self.initProvider.filter))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: MetricStatus defines the observed state of Metric. + properties: + atProvider: + properties: + compute: + description: based metric. This field can't be updated after creation. + (see below for nested schema) The compute rule to compute the + log-based metric. This field can't be updated after creation. + items: + properties: + aggregationType: + description: (String) The type of aggregation to use. This + field can't be updated after creation. Valid values are + count, distribution. The type of aggregation to use. This + field can't be updated after creation. Valid values are + `count`, `distribution`. + type: string + includePercentiles: + description: (Boolean) Toggle to include/exclude percentiles + for a distribution metric. Defaults to false. Can only + be applied to metrics that have an aggregation_type of + distribution. Toggle to include/exclude percentiles for + a distribution metric. Defaults to false. Can only be + applied to metrics that have an `aggregation_type` of + distribution. + type: boolean + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the log-based metric will aggregate on (only used if the + aggregation type is a "distribution"). This field can't + be updated after creation. + type: string + type: object + type: array + filter: + description: based metric filter. Logs matching this filter will + be aggregated in this metric. (see below for nested schema) + The log-based metric filter. Logs matching this filter will + be aggregated in this metric. + items: + properties: + query: + description: following the log search syntax. The search + query - following the log search syntax. + type: string + type: object + type: array + groupBy: + description: (Block Set) The rules for the group by. (see below + for nested schema) The rules for the group by. + items: + properties: + path: + description: based metric will aggregate on (only used if + the aggregation type is a "distribution"). This field + can't be updated after creation. The path to the value + the log-based metric will be aggregated over. + type: string + tagName: + description: (String) Name of the tag that gets created. + Name of the tag that gets created. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + name: + description: based metric. This field can't be updated after creation. + The name of the log-based metric. This field can't be updated + after creation. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/logs.datadog.upbound.io_pipelineorders.yaml b/package/crds/logs.datadog.upbound.io_pipelineorders.yaml new file mode 100644 index 0000000..4dab933 --- /dev/null +++ b/package/crds/logs.datadog.upbound.io_pipelineorders.yaml @@ -0,0 +1,360 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: pipelineorders.logs.datadog.upbound.io +spec: + group: logs.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: PipelineOrder + listKind: PipelineOrderList + plural: pipelineorders + singular: pipelineorder + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: PipelineOrder is the Schema for the PipelineOrders API. Provides + a Datadog Logs Pipeline API resource, which is used to manage Datadog log + pipelines order. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PipelineOrderSpec defines the desired state of PipelineOrder + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + name: + description: (String) The name attribute in the resource datadog_logs_pipeline_order + needs to be unique. It's recommended to use the same value as + the resource name. No related field is available in Logs Pipeline + API. The name attribute in the resource `datadog_logs_pipeline_order` + needs to be unique. It's recommended to use the same value as + the resource name. No related field is available in [Logs Pipeline + API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order). + type: string + pipelines: + description: (List of String) The pipeline IDs list. The order + of pipeline IDs in this attribute defines the overall pipeline + order for logs. The pipeline IDs list. The order of pipeline + IDs in this attribute defines the overall pipeline order for + logs. + items: + type: string + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + name: + description: (String) The name attribute in the resource datadog_logs_pipeline_order + needs to be unique. It's recommended to use the same value as + the resource name. No related field is available in Logs Pipeline + API. The name attribute in the resource `datadog_logs_pipeline_order` + needs to be unique. It's recommended to use the same value as + the resource name. No related field is available in [Logs Pipeline + API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order). + type: string + pipelines: + description: (List of String) The pipeline IDs list. The order + of pipeline IDs in this attribute defines the overall pipeline + order for logs. The pipeline IDs list. The order of pipeline + IDs in this attribute defines the overall pipeline order for + logs. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.pipelines is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.pipelines) + || (has(self.initProvider) && has(self.initProvider.pipelines))' + status: + description: PipelineOrderStatus defines the observed state of PipelineOrder. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) The name attribute in the resource datadog_logs_pipeline_order + needs to be unique. It's recommended to use the same value as + the resource name. No related field is available in Logs Pipeline + API. The name attribute in the resource `datadog_logs_pipeline_order` + needs to be unique. It's recommended to use the same value as + the resource name. No related field is available in [Logs Pipeline + API](https://docs.datadoghq.com/api/v1/logs-pipelines/#get-pipeline-order). + type: string + pipelines: + description: (List of String) The pipeline IDs list. The order + of pipeline IDs in this attribute defines the overall pipeline + order for logs. The pipeline IDs list. The order of pipeline + IDs in this attribute defines the overall pipeline order for + logs. + items: + type: string + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/metric.datadog.upbound.io_metadata.yaml b/package/crds/metric.datadog.upbound.io_metadata.yaml new file mode 100644 index 0000000..6cc0ea7 --- /dev/null +++ b/package/crds/metric.datadog.upbound.io_metadata.yaml @@ -0,0 +1,406 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: metadata.metric.datadog.upbound.io +spec: + group: metric.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Metadata + listKind: MetadataList + plural: metadata + singular: metadata + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Metadata is the Schema for the Metadatas API. Provides a Datadog + metric_metadata resource. This can be used to manage a metric's metadata. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MetadataSpec defines the desired state of Metadata + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) A description of the metric. A description + of the metric. + type: string + metric: + description: (String) The name of the metric. The name of the + metric. + type: string + perUnit: + description: (String) Per unit of the metric such as second in + bytes per second. Per unit of the metric such as `second` in + `bytes per second`. + type: string + shortName: + description: (String) A short name of the metric. A short name + of the metric. + type: string + statsdInterval: + description: (Number) If applicable, statsd flush interval in + seconds for the metric. If applicable, statsd flush interval + in seconds for the metric. + type: number + type: + description: (String) Metric type such as count, gauge, or rate. + Updating a metric of type distribution is not supported. If + you would like to see the distribution type returned, contact + Datadog support. Metric type such as `count`, `gauge`, or `rate`. + Updating a metric of type `distribution` is not supported. If + you would like to see the `distribution` type returned, contact + [Datadog support](https://docs.datadoghq.com/help/). + type: string + unit: + description: (String) Primary unit of the metric such as byte + or operation. Primary unit of the metric such as `byte` or `operation`. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) A description of the metric. A description + of the metric. + type: string + metric: + description: (String) The name of the metric. The name of the + metric. + type: string + perUnit: + description: (String) Per unit of the metric such as second in + bytes per second. Per unit of the metric such as `second` in + `bytes per second`. + type: string + shortName: + description: (String) A short name of the metric. A short name + of the metric. + type: string + statsdInterval: + description: (Number) If applicable, statsd flush interval in + seconds for the metric. If applicable, statsd flush interval + in seconds for the metric. + type: number + type: + description: (String) Metric type such as count, gauge, or rate. + Updating a metric of type distribution is not supported. If + you would like to see the distribution type returned, contact + Datadog support. Metric type such as `count`, `gauge`, or `rate`. + Updating a metric of type `distribution` is not supported. If + you would like to see the `distribution` type returned, contact + [Datadog support](https://docs.datadoghq.com/help/). + type: string + unit: + description: (String) Primary unit of the metric such as byte + or operation. Primary unit of the metric such as `byte` or `operation`. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.metric is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.metric) + || (has(self.initProvider) && has(self.initProvider.metric))' + status: + description: MetadataStatus defines the observed state of Metadata. + properties: + atProvider: + properties: + description: + description: (String) A description of the metric. A description + of the metric. + type: string + id: + description: (String) The ID of this resource. + type: string + metric: + description: (String) The name of the metric. The name of the + metric. + type: string + perUnit: + description: (String) Per unit of the metric such as second in + bytes per second. Per unit of the metric such as `second` in + `bytes per second`. + type: string + shortName: + description: (String) A short name of the metric. A short name + of the metric. + type: string + statsdInterval: + description: (Number) If applicable, statsd flush interval in + seconds for the metric. If applicable, statsd flush interval + in seconds for the metric. + type: number + type: + description: (String) Metric type such as count, gauge, or rate. + Updating a metric of type distribution is not supported. If + you would like to see the distribution type returned, contact + Datadog support. Metric type such as `count`, `gauge`, or `rate`. + Updating a metric of type `distribution` is not supported. If + you would like to see the `distribution` type returned, contact + [Datadog support](https://docs.datadoghq.com/help/). + type: string + unit: + description: (String) Primary unit of the metric such as byte + or operation. Primary unit of the metric such as `byte` or `operation`. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/metric.datadog.upbound.io_tagconfigurations.yaml b/package/crds/metric.datadog.upbound.io_tagconfigurations.yaml new file mode 100644 index 0000000..5ac9a9e --- /dev/null +++ b/package/crds/metric.datadog.upbound.io_tagconfigurations.yaml @@ -0,0 +1,493 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: tagconfigurations.metric.datadog.upbound.io +spec: + group: metric.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: TagConfiguration + listKind: TagConfigurationList + plural: tagconfigurations + singular: tagconfiguration + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: TagConfiguration is the Schema for the TagConfigurations API. + Provides a Datadog metric tag configuration resource. This can be used to + modify tag configurations for metrics. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TagConfigurationSpec defines the desired state of TagConfiguration + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + aggregations: + description: '(Block Set) A list of queryable aggregation combinations + for a count, rate, or gauge metric. By default, count and rate + metrics require the (time: sum, space: sum) aggregation and + gauge metrics require the (time: avg, space: avg) aggregation. + Can only be applied to metrics that have a metric_type of count, + rate, or gauge. (see below for nested schema) A list of queryable + aggregation combinations for a count, rate, or gauge metric. + By default, count and rate metrics require the (time: sum, space: + sum) aggregation and gauge metrics require the (time: avg, space: + avg) aggregation. Can only be applied to metrics that have a + `metric_type` of count, rate, or gauge.' + items: + properties: + space: + description: (String) A space aggregation for use in query. + Valid values are avg, max, min, sum. A space aggregation + for use in query. Valid values are `avg`, `max`, `min`, + `sum`. + type: string + time: + description: (String) A time aggregation for use in query. + Valid values are avg, count, max, min, sum. A time aggregation + for use in query. Valid values are `avg`, `count`, `max`, + `min`, `sum`. + type: string + type: object + type: array + excludeTagsMode: + description: (Boolean) Toggle to include/exclude tags as queryable + for your metric. Can only be applied to metrics that have one + or more tags configured. Defaults to false. Toggle to include/exclude + tags as queryable for your metric. Can only be applied to metrics + that have one or more tags configured. Defaults to `false`. + type: boolean + includePercentiles: + description: (Boolean) Toggle to include/exclude percentiles for + a distribution metric. Defaults to false. Can only be applied + to metrics that have a metric_type of distribution. Toggle to + include/exclude percentiles for a distribution metric. Defaults + to false. Can only be applied to metrics that have a `metric_type` + of distribution. + type: boolean + metricName: + description: (String) The metric name for this resource. The metric + name for this resource. + type: string + metricType: + description: (String) The metric's type. This field can't be updated + after creation. Valid values are gauge, count, rate, distribution. + The metric's type. This field can't be updated after creation. + Valid values are `gauge`, `count`, `rate`, `distribution`. + type: string + tags: + description: (Set of String) A list of tag keys that will be queryable + for your metric. A list of tag keys that will be queryable for + your metric. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + aggregations: + description: '(Block Set) A list of queryable aggregation combinations + for a count, rate, or gauge metric. By default, count and rate + metrics require the (time: sum, space: sum) aggregation and + gauge metrics require the (time: avg, space: avg) aggregation. + Can only be applied to metrics that have a metric_type of count, + rate, or gauge. (see below for nested schema) A list of queryable + aggregation combinations for a count, rate, or gauge metric. + By default, count and rate metrics require the (time: sum, space: + sum) aggregation and gauge metrics require the (time: avg, space: + avg) aggregation. Can only be applied to metrics that have a + `metric_type` of count, rate, or gauge.' + items: + properties: + space: + description: (String) A space aggregation for use in query. + Valid values are avg, max, min, sum. A space aggregation + for use in query. Valid values are `avg`, `max`, `min`, + `sum`. + type: string + time: + description: (String) A time aggregation for use in query. + Valid values are avg, count, max, min, sum. A time aggregation + for use in query. Valid values are `avg`, `count`, `max`, + `min`, `sum`. + type: string + type: object + type: array + excludeTagsMode: + description: (Boolean) Toggle to include/exclude tags as queryable + for your metric. Can only be applied to metrics that have one + or more tags configured. Defaults to false. Toggle to include/exclude + tags as queryable for your metric. Can only be applied to metrics + that have one or more tags configured. Defaults to `false`. + type: boolean + includePercentiles: + description: (Boolean) Toggle to include/exclude percentiles for + a distribution metric. Defaults to false. Can only be applied + to metrics that have a metric_type of distribution. Toggle to + include/exclude percentiles for a distribution metric. Defaults + to false. Can only be applied to metrics that have a `metric_type` + of distribution. + type: boolean + metricName: + description: (String) The metric name for this resource. The metric + name for this resource. + type: string + metricType: + description: (String) The metric's type. This field can't be updated + after creation. Valid values are gauge, count, rate, distribution. + The metric's type. This field can't be updated after creation. + Valid values are `gauge`, `count`, `rate`, `distribution`. + type: string + tags: + description: (Set of String) A list of tag keys that will be queryable + for your metric. A list of tag keys that will be queryable for + your metric. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.metricName is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.metricName) + || (has(self.initProvider) && has(self.initProvider.metricName))' + - message: spec.forProvider.metricType is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.metricType) + || (has(self.initProvider) && has(self.initProvider.metricType))' + - message: spec.forProvider.tags is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.tags) + || (has(self.initProvider) && has(self.initProvider.tags))' + status: + description: TagConfigurationStatus defines the observed state of TagConfiguration. + properties: + atProvider: + properties: + aggregations: + description: '(Block Set) A list of queryable aggregation combinations + for a count, rate, or gauge metric. By default, count and rate + metrics require the (time: sum, space: sum) aggregation and + gauge metrics require the (time: avg, space: avg) aggregation. + Can only be applied to metrics that have a metric_type of count, + rate, or gauge. (see below for nested schema) A list of queryable + aggregation combinations for a count, rate, or gauge metric. + By default, count and rate metrics require the (time: sum, space: + sum) aggregation and gauge metrics require the (time: avg, space: + avg) aggregation. Can only be applied to metrics that have a + `metric_type` of count, rate, or gauge.' + items: + properties: + space: + description: (String) A space aggregation for use in query. + Valid values are avg, max, min, sum. A space aggregation + for use in query. Valid values are `avg`, `max`, `min`, + `sum`. + type: string + time: + description: (String) A time aggregation for use in query. + Valid values are avg, count, max, min, sum. A time aggregation + for use in query. Valid values are `avg`, `count`, `max`, + `min`, `sum`. + type: string + type: object + type: array + excludeTagsMode: + description: (Boolean) Toggle to include/exclude tags as queryable + for your metric. Can only be applied to metrics that have one + or more tags configured. Defaults to false. Toggle to include/exclude + tags as queryable for your metric. Can only be applied to metrics + that have one or more tags configured. Defaults to `false`. + type: boolean + id: + description: (String) The ID of this resource. + type: string + includePercentiles: + description: (Boolean) Toggle to include/exclude percentiles for + a distribution metric. Defaults to false. Can only be applied + to metrics that have a metric_type of distribution. Toggle to + include/exclude percentiles for a distribution metric. Defaults + to false. Can only be applied to metrics that have a `metric_type` + of distribution. + type: boolean + metricName: + description: (String) The metric name for this resource. The metric + name for this resource. + type: string + metricType: + description: (String) The metric's type. This field can't be updated + after creation. Valid values are gauge, count, rate, distribution. + The metric's type. This field can't be updated after creation. + Valid values are `gauge`, `count`, `rate`, `distribution`. + type: string + tags: + description: (Set of String) A list of tag keys that will be queryable + for your metric. A list of tag keys that will be queryable for + your metric. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/securitymonitoring.datadog.upbound.io_defaultrules.yaml b/package/crds/securitymonitoring.datadog.upbound.io_defaultrules.yaml new file mode 100644 index 0000000..c7d3a9c --- /dev/null +++ b/package/crds/securitymonitoring.datadog.upbound.io_defaultrules.yaml @@ -0,0 +1,501 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: defaultrules.securitymonitoring.datadog.upbound.io +spec: + group: securitymonitoring.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DefaultRule + listKind: DefaultRuleList + plural: defaultrules + singular: defaultrule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: DefaultRule is the Schema for the DefaultRules API. Provides + a Datadog Security Monitoring Rule API resource for default rules. It can + only be imported, you can't create a default rule. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DefaultRuleSpec defines the desired state of DefaultRule + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + case: + description: '(Block List, Max: 10) Cases of the rule, this is + used to update notifications. (see below for nested schema) + Cases of the rule, this is used to update notifications.' + items: + properties: + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + status: + description: (String) Status of the rule case to match. + Valid values are info, low, medium, high, critical. Status + of the rule case to match. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + enabled: + description: (Boolean) Enable the rule. Defaults to true. Enable + the rule. Defaults to `true`. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. (see below for nested schema) + Additional queries to filter matched events before they are + processed. + items: + properties: + action: + description: '(String) The type of filtering action. Allowed + enum values: require, suppress Valid values are require, + suppress. The type of filtering action. Allowed enum values: + require, suppress Valid values are `require`, `suppress`.' + type: string + query: + description: (String) Query for selecting logs to apply + the filtering action. Query for selecting logs to apply + the filtering action. + type: string + type: object + type: array + options: + description: '(Block List, Max: 1) Options on default rules. Note + that only a subset of fields can be updated on default rule + options. (see below for nested schema) Options on default rules. + Note that only a subset of fields can be updated on default + rule options.' + items: + properties: + decreaseCriticalityBasedOnEnv: + description: production environments have a lower severity + than what is defined by the rule case, which can reduce + noise. The decrement is applied when the environment tag + of the signal starts with staging, test, or dev. Only + available when the rule type is log_detection. Defaults + to false. If true, signals in non-production environments + have a lower severity than what is defined by the rule + case, which can reduce noise. The decrement is applied + when the environment tag of the signal starts with `staging`, + `test`, or `dev`. Only available when the rule type is + `log_detection`. Defaults to `false`. + type: boolean + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + case: + description: '(Block List, Max: 10) Cases of the rule, this is + used to update notifications. (see below for nested schema) + Cases of the rule, this is used to update notifications.' + items: + properties: + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + status: + description: (String) Status of the rule case to match. + Valid values are info, low, medium, high, critical. Status + of the rule case to match. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + enabled: + description: (Boolean) Enable the rule. Defaults to true. Enable + the rule. Defaults to `true`. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. (see below for nested schema) + Additional queries to filter matched events before they are + processed. + items: + properties: + action: + description: '(String) The type of filtering action. Allowed + enum values: require, suppress Valid values are require, + suppress. The type of filtering action. Allowed enum values: + require, suppress Valid values are `require`, `suppress`.' + type: string + query: + description: (String) Query for selecting logs to apply + the filtering action. Query for selecting logs to apply + the filtering action. + type: string + type: object + type: array + options: + description: '(Block List, Max: 1) Options on default rules. Note + that only a subset of fields can be updated on default rule + options. (see below for nested schema) Options on default rules. + Note that only a subset of fields can be updated on default + rule options.' + items: + properties: + decreaseCriticalityBasedOnEnv: + description: production environments have a lower severity + than what is defined by the rule case, which can reduce + noise. The decrement is applied when the environment tag + of the signal starts with staging, test, or dev. Only + available when the rule type is log_detection. Defaults + to false. If true, signals in non-production environments + have a lower severity than what is defined by the rule + case, which can reduce noise. The decrement is applied + when the environment tag of the signal starts with `staging`, + `test`, or `dev`. Only available when the rule type is + `log_detection`. Defaults to `false`. + type: boolean + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + status: + description: DefaultRuleStatus defines the observed state of DefaultRule. + properties: + atProvider: + properties: + case: + description: '(Block List, Max: 10) Cases of the rule, this is + used to update notifications. (see below for nested schema) + Cases of the rule, this is used to update notifications.' + items: + properties: + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + status: + description: (String) Status of the rule case to match. + Valid values are info, low, medium, high, critical. Status + of the rule case to match. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + enabled: + description: (Boolean) Enable the rule. Defaults to true. Enable + the rule. Defaults to `true`. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. (see below for nested schema) + Additional queries to filter matched events before they are + processed. + items: + properties: + action: + description: '(String) The type of filtering action. Allowed + enum values: require, suppress Valid values are require, + suppress. The type of filtering action. Allowed enum values: + require, suppress Valid values are `require`, `suppress`.' + type: string + query: + description: (String) Query for selecting logs to apply + the filtering action. Query for selecting logs to apply + the filtering action. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + options: + description: '(Block List, Max: 1) Options on default rules. Note + that only a subset of fields can be updated on default rule + options. (see below for nested schema) Options on default rules. + Note that only a subset of fields can be updated on default + rule options.' + items: + properties: + decreaseCriticalityBasedOnEnv: + description: production environments have a lower severity + than what is defined by the rule case, which can reduce + noise. The decrement is applied when the environment tag + of the signal starts with staging, test, or dev. Only + available when the rule type is log_detection. Defaults + to false. If true, signals in non-production environments + have a lower severity than what is defined by the rule + case, which can reduce noise. The decrement is applied + when the environment tag of the signal starts with `staging`, + `test`, or `dev`. Only available when the rule type is + `log_detection`. Defaults to `false`. + type: boolean + type: object + type: array + type: + description: (String) The rule type. The rule type. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/securitymonitoring.datadog.upbound.io_filters.yaml b/package/crds/securitymonitoring.datadog.upbound.io_filters.yaml new file mode 100644 index 0000000..2902b7b --- /dev/null +++ b/package/crds/securitymonitoring.datadog.upbound.io_filters.yaml @@ -0,0 +1,415 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: filters.securitymonitoring.datadog.upbound.io +spec: + group: securitymonitoring.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Filter + listKind: FilterList + plural: filters + singular: filter + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Filter is the Schema for the Filters API. Provides a Datadog + Security Monitoring Rule API resource for security filters. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: FilterSpec defines the desired state of Filter + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + exclusionFilter: + description: (Block List) Exclusion filters to exclude some logs + from the security filter. (see below for nested schema) Exclusion + filters to exclude some logs from the security filter. + items: + properties: + name: + description: (String) The name of the security filter. Exclusion + filter name. + type: string + query: + description: (String) The query of the security filter. + Exclusion filter query. Logs that match this query are + excluded from the security filter. + type: string + type: object + type: array + filteredDataType: + description: (String) The filtered data type. Valid values are + logs. Defaults to "logs". The filtered data type. Valid values + are `logs`. Defaults to `"logs"`. + type: string + isEnabled: + description: (Boolean) Whether the security filter is enabled. + Whether the security filter is enabled. + type: boolean + name: + description: (String) The name of the security filter. The name + of the security filter. + type: string + query: + description: (String) The query of the security filter. The query + of the security filter. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + exclusionFilter: + description: (Block List) Exclusion filters to exclude some logs + from the security filter. (see below for nested schema) Exclusion + filters to exclude some logs from the security filter. + items: + properties: + name: + description: (String) The name of the security filter. Exclusion + filter name. + type: string + query: + description: (String) The query of the security filter. + Exclusion filter query. Logs that match this query are + excluded from the security filter. + type: string + type: object + type: array + filteredDataType: + description: (String) The filtered data type. Valid values are + logs. Defaults to "logs". The filtered data type. Valid values + are `logs`. Defaults to `"logs"`. + type: string + isEnabled: + description: (Boolean) Whether the security filter is enabled. + Whether the security filter is enabled. + type: boolean + name: + description: (String) The name of the security filter. The name + of the security filter. + type: string + query: + description: (String) The query of the security filter. The query + of the security filter. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.isEnabled is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.isEnabled) + || (has(self.initProvider) && has(self.initProvider.isEnabled))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.query is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.query) + || (has(self.initProvider) && has(self.initProvider.query))' + status: + description: FilterStatus defines the observed state of Filter. + properties: + atProvider: + properties: + exclusionFilter: + description: (Block List) Exclusion filters to exclude some logs + from the security filter. (see below for nested schema) Exclusion + filters to exclude some logs from the security filter. + items: + properties: + name: + description: (String) The name of the security filter. Exclusion + filter name. + type: string + query: + description: (String) The query of the security filter. + Exclusion filter query. Logs that match this query are + excluded from the security filter. + type: string + type: object + type: array + filteredDataType: + description: (String) The filtered data type. Valid values are + logs. Defaults to "logs". The filtered data type. Valid values + are `logs`. Defaults to `"logs"`. + type: string + id: + description: (String) The ID of this resource. + type: string + isEnabled: + description: (Boolean) Whether the security filter is enabled. + Whether the security filter is enabled. + type: boolean + name: + description: (String) The name of the security filter. The name + of the security filter. + type: string + query: + description: (String) The query of the security filter. The query + of the security filter. + type: string + version: + description: (Number) The version of the security filter. The + version of the security filter. + type: number + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/securitymonitoring.datadog.upbound.io_rules.yaml b/package/crds/securitymonitoring.datadog.upbound.io_rules.yaml new file mode 100644 index 0000000..02cb47a --- /dev/null +++ b/package/crds/securitymonitoring.datadog.upbound.io_rules.yaml @@ -0,0 +1,1549 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: rules.securitymonitoring.datadog.upbound.io +spec: + group: securitymonitoring.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Rule + listKind: RuleList + plural: rules + singular: rule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Rule is the Schema for the Rules API. Provides a Datadog Security + Monitoring Rule API resource. This can be used to create and manage Datadog + security monitoring rules. To change settings for a default rule use datadog_security_default_rule + instead. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RuleSpec defines the desired state of Rule + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + case: + description: '(Block List, Max: 10) Cases for generating signals. + (see below for nested schema) Cases for generating signals.' + items: + properties: + condition: + description: (String) A rule case contains logical operations + (>,>=, &&, ||) to determine if a signal should be generated + based on the event counts in the previously defined queries. + A rule case contains logical operations (`>`,`>=`, `&&`, + `||`) to determine if a signal should be generated based + on the event counts in the previously defined queries. + type: string + name: + description: (String) The name of the rule. Name of the + case. + type: string + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + status: + description: (String) Severity of the Security Signal. Valid + values are info, low, medium, high, critical. Severity + of the Security Signal. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + enabled: + description: (Boolean) Whether the rule is enabled. Defaults to + true. Whether the rule is enabled. Defaults to `true`. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. (see below for nested schema) + Additional queries to filter matched events before they are + processed. + items: + properties: + action: + description: (String) The type of filtering action. Valid + values are require, suppress. The type of filtering action. + Valid values are `require`, `suppress`. + type: string + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) Query + for selecting logs to apply the filtering action. + type: string + type: object + type: array + hasExtendedTitle: + description: by values in their title. Defaults to false. Whether + the notifications include the triggering group-by values in + their title. Defaults to `false`. + type: boolean + message: + description: (String) Message for generated signals. Message for + generated signals. + type: string + name: + description: (String) The name of the rule. The name of the rule. + type: string + options: + description: '(Block List, Max: 1) Options on rules. (see below + for nested schema) Options on rules.' + items: + properties: + decreaseCriticalityBasedOnEnv: + description: production environments have a lower severity + than what is defined by the rule case, which can reduce + noise. The decrement is applied when the environment tag + of the signal starts with staging, test, or dev. Only + available when the rule type is log_detection. Defaults + to false. If true, signals in non-production environments + have a lower severity than what is defined by the rule + case, which can reduce noise. The decrement is applied + when the environment tag of the signal starts with `staging`, + `test`, or `dev`. Only available when the rule type is + `log_detection`. Defaults to `false`. + type: boolean + detectionMethod: + description: (String) The detection method. Valid values + are threshold, new_value, anomaly_detection, impossible_travel, + hardcoded, third_party. Defaults to "threshold". The detection + method. Valid values are `threshold`, `new_value`, `anomaly_detection`, + `impossible_travel`, `hardcoded`, `third_party`. Defaults + to `"threshold"`. + type: string + evaluationWindow: + description: (Number) A time window is specified to match + when at least one of the cases matches true. This is a + sliding window and evaluates in real time. Valid values + are 0, 60, 300, 600, 900, 1800, 3600, 7200. A time window + is specified to match when at least one of the cases matches + true. This is a sliding window and evaluates in real time. + Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, + `3600`, `7200`. + type: number + impossibleTravelOptions: + description: '(Block List, Max: 1) Options for rules using + the impossible travel detection method. (see below for + nested schema) Options for rules using the impossible + travel detection method.' + items: + properties: + baselineUserLocations: + description: (Boolean) If true, signals are suppressed + for the first 24 hours. During that time, Datadog + learns the user's regular access locations. This + can be helpful to reduce noise and infer VPN usage + or credentialed API access. Defaults to false. If + true, signals are suppressed for the first 24 hours. + During that time, Datadog learns the user's regular + access locations. This can be helpful to reduce + noise and infer VPN usage or credentialed API access. + Defaults to `false`. + type: boolean + type: object + type: array + keepAlive: + description: (Number) Once a signal is generated, the signal + will remain “open” if a case is matched at least once + within this keep alive window (in seconds). Valid values + are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600. + Once a signal is generated, the signal will remain “open” + if a case is matched at least once within this keep alive + window (in seconds). Valid values are `0`, `60`, `300`, + `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + type: number + maxSignalDuration: + description: (Number) A signal will “close” regardless of + the query being matched once the time exceeds the maximum + duration (in seconds). This time is calculated from the + first seen timestamp. Valid values are 0, 60, 300, 600, + 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400. A signal + will “close” regardless of the query being matched once + the time exceeds the maximum duration (in seconds). This + time is calculated from the first seen timestamp. Valid + values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, + `7200`, `10800`, `21600`, `43200`, `86400`. + type: number + newValueOptions: + description: '(Block List, Max: 1) New value rules specific + options. (see below for nested schema) New value rules + specific options.' + items: + properties: + forgetAfter: + description: (Number) The duration in days after which + a learned value is forgotten. Valid values are 1, + 2, 7, 14, 21, 28. The duration in days after which + a learned value is forgotten. Valid values are `1`, + `2`, `7`, `14`, `21`, `28`. + type: number + learningDuration: + description: (Number) The duration in days during + which values are learned, and after which signals + will be generated for values that weren't learned. + If set to 0, a signal will be generated for all + new values after the first value is learned. Valid + values are 0, 1, 7. Defaults to 1. The duration + in days during which values are learned, and after + which signals will be generated for values that + weren't learned. If set to 0, a signal will be generated + for all new values after the first value is learned. + Valid values are `0`, `1`, `7`. Defaults to `1`. + type: number + learningMethod: + description: (String) The learning method used to + determine when signals should be generated for values + that weren't learned. Valid values are duration, + threshold. Defaults to "duration". The learning + method used to determine when signals should be + generated for values that weren't learned. Valid + values are `duration`, `threshold`. Defaults to + `"duration"`. + type: string + learningThreshold: + description: (Number) A number of occurrences after + which signals are generated for values that weren't + learned. Valid values are 0, 1. Defaults to 0. A + number of occurrences after which signals are generated + for values that weren't learned. Valid values are + `0`, `1`. Defaults to `0`. + type: number + type: object + type: array + thirdPartyRuleOptions: + description: party detection method. (see below for nested + schema) Options for rules using the third-party detection + method. + items: + properties: + defaultNotifications: + description: party cases match. Notification targets + for the default rule case, when none of the third-party + cases match. + items: + type: string + type: array + defaultStatus: + description: party cases match. Valid values are info, + low, medium, high, critical. Severity of the default + rule case, when none of the third-party cases match. + Valid values are `info`, `low`, `medium`, `high`, + `critical`. + type: string + rootQuery: + description: party case queries. Each of them can + have different group by fields, to aggregate differently + based on the type of alert. (see below for nested + schema) Queries to be combined with third-party + case queries. Each of them can have different group + by fields, to aggregate differently based on the + type of alert. + items: + properties: + groupByFields: + description: (List of String) Fields to group + by. If empty, each log triggers a signal. + Fields to group by. If empty, each log triggers + a signal. + items: + type: string + type: array + query: + description: (Block List) Queries for selecting + logs which are part of the rule. (see below + for nested schema) Query to filter logs. + type: string + type: object + type: array + signalTitleTemplate: + description: (String) A template for the signal title; + if omitted, the title is generated based on the + case name. A template for the signal title; if omitted, + the title is generated based on the case name. + type: string + type: object + type: array + type: object + type: array + query: + description: (Block List) Queries for selecting logs which are + part of the rule. (see below for nested schema) Queries for + selecting logs which are part of the rule. + items: + properties: + agentRule: + description: (Block List, Deprecated) Deprecated. It won't + be applied anymore. Deprecated. agent_rule has been deprecated + in favor of new Agent Rule resource. (see below for nested + schema) **Deprecated**. It won't be applied anymore. **Deprecated.** + `agent_rule` has been deprecated in favor of new Agent + Rule resource. + items: + properties: + agentRuleId: + description: (String) Deprecated. It won't be applied + anymore. **Deprecated**. It won't be applied anymore. + type: string + expression: + description: (String) Deprecated. It won't be applied + anymore. **Deprecated**. It won't be applied anymore. + type: string + type: object + type: array + aggregation: + description: (String) The aggregation type. For Signal Correlation + rules, it must be event_count. Valid values are count, + cardinality, sum, max, new_value, geo_data, event_count, + none. Defaults to "count". The aggregation type. For Signal + Correlation rules, it must be event_count. Valid values + are `count`, `cardinality`, `sum`, `max`, `new_value`, + `geo_data`, `event_count`, `none`. Defaults to `"count"`. + type: string + distinctFields: + description: (List of String) Field for which the cardinality + is measured. Sent as an array. Field for which the cardinality + is measured. Sent as an array. + items: + type: string + type: array + groupByFields: + description: (List of String) Fields to group by. If empty, + each log triggers a signal. Fields to group by. + items: + type: string + type: array + metric: + description: (String, Deprecated) The target field to aggregate + over when using the sum, max, or geo_data aggregations. + Deprecated. Configure metrics instead. This attribute + will be removed in the next major version of the provider. + The target field to aggregate over when using the `sum`, + `max`, or `geo_data` aggregations. **Deprecated.** Configure + `metrics` instead. This attribute will be removed in the + next major version of the provider. + type: string + metrics: + description: (List of String) Group of target fields to + aggregate over when using the sum, max, geo_data, or new_value + aggregations. The sum, max, and geo_data aggregations + only accept one value in this list, whereas the new_value + aggregation accepts up to five values. Group of target + fields to aggregate over when using the `sum`, `max`, + `geo_data`, or `new_value` aggregations. The `sum`, `max`, + and `geo_data` aggregations only accept one value in this + list, whereas the `new_value` aggregation accepts up to + five values. + items: + type: string + type: array + name: + description: (String) The name of the rule. Name of the + query. Not compatible with `new_value` aggregations. + type: string + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) Query + to run on logs. + type: string + type: object + type: array + signalQuery: + description: (Block List) Queries for selecting logs which are + part of the rule. (see below for nested schema) Queries for + selecting logs which are part of the rule. + items: + properties: + aggregation: + description: (String) The aggregation type. For Signal Correlation + rules, it must be event_count. Valid values are count, + cardinality, sum, max, new_value, geo_data, event_count, + none. Defaults to "count". The aggregation type. For Signal + Correlation rules, it must be event_count. Valid values + are `count`, `cardinality`, `sum`, `max`, `new_value`, + `geo_data`, `event_count`, `none`. Defaults to `"event_count"`. + type: string + correlatedByFields: + description: (List of String) Fields to correlate by. Fields + to correlate by. + items: + type: string + type: array + correlatedQueryIndex: + description: projected per query attributes of the rule. + Defaults to "". Index of the rule query used to retrieve + the correlated field. An empty string applies correlation + on the non-projected per query attributes of the rule. + Defaults to `""`. + type: string + defaultRuleId: + description: ONLY. Default Rule ID of the signal to correlate. + This value is READ-ONLY. + type: string + name: + description: (String) The name of the rule. Name of the + query. Not compatible with `new_value` aggregations. + type: string + ruleId: + description: (String) Rule ID of the signal to correlate. + Rule ID of the signal to correlate. + type: string + type: object + type: array + tags: + description: (Set of String) Tags for generated signals. Tags + for generated signals. + items: + type: string + type: array + x-kubernetes-list-type: set + thirdPartyCase: + description: party rules. Only required and accepted for third-party + rules (see below for nested schema) Cases for generating signals + for third-party rules. Only required and accepted for third-party + rules + items: + properties: + name: + description: (String) The name of the rule. Name of the + case. + type: string + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) A + query to associate a third-party event to this case. + type: string + status: + description: (String) Severity of the Security Signal. Valid + values are info, low, medium, high, critical. Severity + of the Security Signal. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + type: + description: (String) The rule type. Valid values are application_security, + log_detection, workload_security, signal_correlation. Defaults + to "log_detection". The rule type. Valid values are `application_security`, + `log_detection`, `workload_security`, `signal_correlation`. + Defaults to `"log_detection"`. + type: string + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + case: + description: '(Block List, Max: 10) Cases for generating signals. + (see below for nested schema) Cases for generating signals.' + items: + properties: + condition: + description: (String) A rule case contains logical operations + (>,>=, &&, ||) to determine if a signal should be generated + based on the event counts in the previously defined queries. + A rule case contains logical operations (`>`,`>=`, `&&`, + `||`) to determine if a signal should be generated based + on the event counts in the previously defined queries. + type: string + name: + description: (String) The name of the rule. Name of the + case. + type: string + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + status: + description: (String) Severity of the Security Signal. Valid + values are info, low, medium, high, critical. Severity + of the Security Signal. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + enabled: + description: (Boolean) Whether the rule is enabled. Defaults to + true. Whether the rule is enabled. Defaults to `true`. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. (see below for nested schema) + Additional queries to filter matched events before they are + processed. + items: + properties: + action: + description: (String) The type of filtering action. Valid + values are require, suppress. The type of filtering action. + Valid values are `require`, `suppress`. + type: string + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) Query + for selecting logs to apply the filtering action. + type: string + type: object + type: array + hasExtendedTitle: + description: by values in their title. Defaults to false. Whether + the notifications include the triggering group-by values in + their title. Defaults to `false`. + type: boolean + message: + description: (String) Message for generated signals. Message for + generated signals. + type: string + name: + description: (String) The name of the rule. The name of the rule. + type: string + options: + description: '(Block List, Max: 1) Options on rules. (see below + for nested schema) Options on rules.' + items: + properties: + decreaseCriticalityBasedOnEnv: + description: production environments have a lower severity + than what is defined by the rule case, which can reduce + noise. The decrement is applied when the environment tag + of the signal starts with staging, test, or dev. Only + available when the rule type is log_detection. Defaults + to false. If true, signals in non-production environments + have a lower severity than what is defined by the rule + case, which can reduce noise. The decrement is applied + when the environment tag of the signal starts with `staging`, + `test`, or `dev`. Only available when the rule type is + `log_detection`. Defaults to `false`. + type: boolean + detectionMethod: + description: (String) The detection method. Valid values + are threshold, new_value, anomaly_detection, impossible_travel, + hardcoded, third_party. Defaults to "threshold". The detection + method. Valid values are `threshold`, `new_value`, `anomaly_detection`, + `impossible_travel`, `hardcoded`, `third_party`. Defaults + to `"threshold"`. + type: string + evaluationWindow: + description: (Number) A time window is specified to match + when at least one of the cases matches true. This is a + sliding window and evaluates in real time. Valid values + are 0, 60, 300, 600, 900, 1800, 3600, 7200. A time window + is specified to match when at least one of the cases matches + true. This is a sliding window and evaluates in real time. + Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, + `3600`, `7200`. + type: number + impossibleTravelOptions: + description: '(Block List, Max: 1) Options for rules using + the impossible travel detection method. (see below for + nested schema) Options for rules using the impossible + travel detection method.' + items: + properties: + baselineUserLocations: + description: (Boolean) If true, signals are suppressed + for the first 24 hours. During that time, Datadog + learns the user's regular access locations. This + can be helpful to reduce noise and infer VPN usage + or credentialed API access. Defaults to false. If + true, signals are suppressed for the first 24 hours. + During that time, Datadog learns the user's regular + access locations. This can be helpful to reduce + noise and infer VPN usage or credentialed API access. + Defaults to `false`. + type: boolean + type: object + type: array + keepAlive: + description: (Number) Once a signal is generated, the signal + will remain “open” if a case is matched at least once + within this keep alive window (in seconds). Valid values + are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600. + Once a signal is generated, the signal will remain “open” + if a case is matched at least once within this keep alive + window (in seconds). Valid values are `0`, `60`, `300`, + `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + type: number + maxSignalDuration: + description: (Number) A signal will “close” regardless of + the query being matched once the time exceeds the maximum + duration (in seconds). This time is calculated from the + first seen timestamp. Valid values are 0, 60, 300, 600, + 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400. A signal + will “close” regardless of the query being matched once + the time exceeds the maximum duration (in seconds). This + time is calculated from the first seen timestamp. Valid + values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, + `7200`, `10800`, `21600`, `43200`, `86400`. + type: number + newValueOptions: + description: '(Block List, Max: 1) New value rules specific + options. (see below for nested schema) New value rules + specific options.' + items: + properties: + forgetAfter: + description: (Number) The duration in days after which + a learned value is forgotten. Valid values are 1, + 2, 7, 14, 21, 28. The duration in days after which + a learned value is forgotten. Valid values are `1`, + `2`, `7`, `14`, `21`, `28`. + type: number + learningDuration: + description: (Number) The duration in days during + which values are learned, and after which signals + will be generated for values that weren't learned. + If set to 0, a signal will be generated for all + new values after the first value is learned. Valid + values are 0, 1, 7. Defaults to 1. The duration + in days during which values are learned, and after + which signals will be generated for values that + weren't learned. If set to 0, a signal will be generated + for all new values after the first value is learned. + Valid values are `0`, `1`, `7`. Defaults to `1`. + type: number + learningMethod: + description: (String) The learning method used to + determine when signals should be generated for values + that weren't learned. Valid values are duration, + threshold. Defaults to "duration". The learning + method used to determine when signals should be + generated for values that weren't learned. Valid + values are `duration`, `threshold`. Defaults to + `"duration"`. + type: string + learningThreshold: + description: (Number) A number of occurrences after + which signals are generated for values that weren't + learned. Valid values are 0, 1. Defaults to 0. A + number of occurrences after which signals are generated + for values that weren't learned. Valid values are + `0`, `1`. Defaults to `0`. + type: number + type: object + type: array + thirdPartyRuleOptions: + description: party detection method. (see below for nested + schema) Options for rules using the third-party detection + method. + items: + properties: + defaultNotifications: + description: party cases match. Notification targets + for the default rule case, when none of the third-party + cases match. + items: + type: string + type: array + defaultStatus: + description: party cases match. Valid values are info, + low, medium, high, critical. Severity of the default + rule case, when none of the third-party cases match. + Valid values are `info`, `low`, `medium`, `high`, + `critical`. + type: string + rootQuery: + description: party case queries. Each of them can + have different group by fields, to aggregate differently + based on the type of alert. (see below for nested + schema) Queries to be combined with third-party + case queries. Each of them can have different group + by fields, to aggregate differently based on the + type of alert. + items: + properties: + groupByFields: + description: (List of String) Fields to group + by. If empty, each log triggers a signal. + Fields to group by. If empty, each log triggers + a signal. + items: + type: string + type: array + query: + description: (Block List) Queries for selecting + logs which are part of the rule. (see below + for nested schema) Query to filter logs. + type: string + type: object + type: array + signalTitleTemplate: + description: (String) A template for the signal title; + if omitted, the title is generated based on the + case name. A template for the signal title; if omitted, + the title is generated based on the case name. + type: string + type: object + type: array + type: object + type: array + query: + description: (Block List) Queries for selecting logs which are + part of the rule. (see below for nested schema) Queries for + selecting logs which are part of the rule. + items: + properties: + agentRule: + description: (Block List, Deprecated) Deprecated. It won't + be applied anymore. Deprecated. agent_rule has been deprecated + in favor of new Agent Rule resource. (see below for nested + schema) **Deprecated**. It won't be applied anymore. **Deprecated.** + `agent_rule` has been deprecated in favor of new Agent + Rule resource. + items: + properties: + agentRuleId: + description: (String) Deprecated. It won't be applied + anymore. **Deprecated**. It won't be applied anymore. + type: string + expression: + description: (String) Deprecated. It won't be applied + anymore. **Deprecated**. It won't be applied anymore. + type: string + type: object + type: array + aggregation: + description: (String) The aggregation type. For Signal Correlation + rules, it must be event_count. Valid values are count, + cardinality, sum, max, new_value, geo_data, event_count, + none. Defaults to "count". The aggregation type. For Signal + Correlation rules, it must be event_count. Valid values + are `count`, `cardinality`, `sum`, `max`, `new_value`, + `geo_data`, `event_count`, `none`. Defaults to `"count"`. + type: string + distinctFields: + description: (List of String) Field for which the cardinality + is measured. Sent as an array. Field for which the cardinality + is measured. Sent as an array. + items: + type: string + type: array + groupByFields: + description: (List of String) Fields to group by. If empty, + each log triggers a signal. Fields to group by. + items: + type: string + type: array + metric: + description: (String, Deprecated) The target field to aggregate + over when using the sum, max, or geo_data aggregations. + Deprecated. Configure metrics instead. This attribute + will be removed in the next major version of the provider. + The target field to aggregate over when using the `sum`, + `max`, or `geo_data` aggregations. **Deprecated.** Configure + `metrics` instead. This attribute will be removed in the + next major version of the provider. + type: string + metrics: + description: (List of String) Group of target fields to + aggregate over when using the sum, max, geo_data, or new_value + aggregations. The sum, max, and geo_data aggregations + only accept one value in this list, whereas the new_value + aggregation accepts up to five values. Group of target + fields to aggregate over when using the `sum`, `max`, + `geo_data`, or `new_value` aggregations. The `sum`, `max`, + and `geo_data` aggregations only accept one value in this + list, whereas the `new_value` aggregation accepts up to + five values. + items: + type: string + type: array + name: + description: (String) The name of the rule. Name of the + query. Not compatible with `new_value` aggregations. + type: string + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) Query + to run on logs. + type: string + type: object + type: array + signalQuery: + description: (Block List) Queries for selecting logs which are + part of the rule. (see below for nested schema) Queries for + selecting logs which are part of the rule. + items: + properties: + aggregation: + description: (String) The aggregation type. For Signal Correlation + rules, it must be event_count. Valid values are count, + cardinality, sum, max, new_value, geo_data, event_count, + none. Defaults to "count". The aggregation type. For Signal + Correlation rules, it must be event_count. Valid values + are `count`, `cardinality`, `sum`, `max`, `new_value`, + `geo_data`, `event_count`, `none`. Defaults to `"event_count"`. + type: string + correlatedByFields: + description: (List of String) Fields to correlate by. Fields + to correlate by. + items: + type: string + type: array + correlatedQueryIndex: + description: projected per query attributes of the rule. + Defaults to "". Index of the rule query used to retrieve + the correlated field. An empty string applies correlation + on the non-projected per query attributes of the rule. + Defaults to `""`. + type: string + defaultRuleId: + description: ONLY. Default Rule ID of the signal to correlate. + This value is READ-ONLY. + type: string + name: + description: (String) The name of the rule. Name of the + query. Not compatible with `new_value` aggregations. + type: string + ruleId: + description: (String) Rule ID of the signal to correlate. + Rule ID of the signal to correlate. + type: string + type: object + type: array + tags: + description: (Set of String) Tags for generated signals. Tags + for generated signals. + items: + type: string + type: array + x-kubernetes-list-type: set + thirdPartyCase: + description: party rules. Only required and accepted for third-party + rules (see below for nested schema) Cases for generating signals + for third-party rules. Only required and accepted for third-party + rules + items: + properties: + name: + description: (String) The name of the rule. Name of the + case. + type: string + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) A + query to associate a third-party event to this case. + type: string + status: + description: (String) Severity of the Security Signal. Valid + values are info, low, medium, high, critical. Severity + of the Security Signal. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + type: + description: (String) The rule type. Valid values are application_security, + log_detection, workload_security, signal_correlation. Defaults + to "log_detection". The rule type. Valid values are `application_security`, + `log_detection`, `workload_security`, `signal_correlation`. + Defaults to `"log_detection"`. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.message is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.message) + || (has(self.initProvider) && has(self.initProvider.message))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: RuleStatus defines the observed state of Rule. + properties: + atProvider: + properties: + case: + description: '(Block List, Max: 10) Cases for generating signals. + (see below for nested schema) Cases for generating signals.' + items: + properties: + condition: + description: (String) A rule case contains logical operations + (>,>=, &&, ||) to determine if a signal should be generated + based on the event counts in the previously defined queries. + A rule case contains logical operations (`>`,`>=`, `&&`, + `||`) to determine if a signal should be generated based + on the event counts in the previously defined queries. + type: string + name: + description: (String) The name of the rule. Name of the + case. + type: string + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + status: + description: (String) Severity of the Security Signal. Valid + values are info, low, medium, high, critical. Severity + of the Security Signal. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + enabled: + description: (Boolean) Whether the rule is enabled. Defaults to + true. Whether the rule is enabled. Defaults to `true`. + type: boolean + filter: + description: (Block List) Additional queries to filter matched + events before they are processed. (see below for nested schema) + Additional queries to filter matched events before they are + processed. + items: + properties: + action: + description: (String) The type of filtering action. Valid + values are require, suppress. The type of filtering action. + Valid values are `require`, `suppress`. + type: string + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) Query + for selecting logs to apply the filtering action. + type: string + type: object + type: array + hasExtendedTitle: + description: by values in their title. Defaults to false. Whether + the notifications include the triggering group-by values in + their title. Defaults to `false`. + type: boolean + id: + description: (String) The ID of this resource. + type: string + message: + description: (String) Message for generated signals. Message for + generated signals. + type: string + name: + description: (String) The name of the rule. The name of the rule. + type: string + options: + description: '(Block List, Max: 1) Options on rules. (see below + for nested schema) Options on rules.' + items: + properties: + decreaseCriticalityBasedOnEnv: + description: production environments have a lower severity + than what is defined by the rule case, which can reduce + noise. The decrement is applied when the environment tag + of the signal starts with staging, test, or dev. Only + available when the rule type is log_detection. Defaults + to false. If true, signals in non-production environments + have a lower severity than what is defined by the rule + case, which can reduce noise. The decrement is applied + when the environment tag of the signal starts with `staging`, + `test`, or `dev`. Only available when the rule type is + `log_detection`. Defaults to `false`. + type: boolean + detectionMethod: + description: (String) The detection method. Valid values + are threshold, new_value, anomaly_detection, impossible_travel, + hardcoded, third_party. Defaults to "threshold". The detection + method. Valid values are `threshold`, `new_value`, `anomaly_detection`, + `impossible_travel`, `hardcoded`, `third_party`. Defaults + to `"threshold"`. + type: string + evaluationWindow: + description: (Number) A time window is specified to match + when at least one of the cases matches true. This is a + sliding window and evaluates in real time. Valid values + are 0, 60, 300, 600, 900, 1800, 3600, 7200. A time window + is specified to match when at least one of the cases matches + true. This is a sliding window and evaluates in real time. + Valid values are `0`, `60`, `300`, `600`, `900`, `1800`, + `3600`, `7200`. + type: number + impossibleTravelOptions: + description: '(Block List, Max: 1) Options for rules using + the impossible travel detection method. (see below for + nested schema) Options for rules using the impossible + travel detection method.' + items: + properties: + baselineUserLocations: + description: (Boolean) If true, signals are suppressed + for the first 24 hours. During that time, Datadog + learns the user's regular access locations. This + can be helpful to reduce noise and infer VPN usage + or credentialed API access. Defaults to false. If + true, signals are suppressed for the first 24 hours. + During that time, Datadog learns the user's regular + access locations. This can be helpful to reduce + noise and infer VPN usage or credentialed API access. + Defaults to `false`. + type: boolean + type: object + type: array + keepAlive: + description: (Number) Once a signal is generated, the signal + will remain “open” if a case is matched at least once + within this keep alive window (in seconds). Valid values + are 0, 60, 300, 600, 900, 1800, 3600, 7200, 10800, 21600. + Once a signal is generated, the signal will remain “open” + if a case is matched at least once within this keep alive + window (in seconds). Valid values are `0`, `60`, `300`, + `600`, `900`, `1800`, `3600`, `7200`, `10800`, `21600`. + type: number + maxSignalDuration: + description: (Number) A signal will “close” regardless of + the query being matched once the time exceeds the maximum + duration (in seconds). This time is calculated from the + first seen timestamp. Valid values are 0, 60, 300, 600, + 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400. A signal + will “close” regardless of the query being matched once + the time exceeds the maximum duration (in seconds). This + time is calculated from the first seen timestamp. Valid + values are `0`, `60`, `300`, `600`, `900`, `1800`, `3600`, + `7200`, `10800`, `21600`, `43200`, `86400`. + type: number + newValueOptions: + description: '(Block List, Max: 1) New value rules specific + options. (see below for nested schema) New value rules + specific options.' + items: + properties: + forgetAfter: + description: (Number) The duration in days after which + a learned value is forgotten. Valid values are 1, + 2, 7, 14, 21, 28. The duration in days after which + a learned value is forgotten. Valid values are `1`, + `2`, `7`, `14`, `21`, `28`. + type: number + learningDuration: + description: (Number) The duration in days during + which values are learned, and after which signals + will be generated for values that weren't learned. + If set to 0, a signal will be generated for all + new values after the first value is learned. Valid + values are 0, 1, 7. Defaults to 1. The duration + in days during which values are learned, and after + which signals will be generated for values that + weren't learned. If set to 0, a signal will be generated + for all new values after the first value is learned. + Valid values are `0`, `1`, `7`. Defaults to `1`. + type: number + learningMethod: + description: (String) The learning method used to + determine when signals should be generated for values + that weren't learned. Valid values are duration, + threshold. Defaults to "duration". The learning + method used to determine when signals should be + generated for values that weren't learned. Valid + values are `duration`, `threshold`. Defaults to + `"duration"`. + type: string + learningThreshold: + description: (Number) A number of occurrences after + which signals are generated for values that weren't + learned. Valid values are 0, 1. Defaults to 0. A + number of occurrences after which signals are generated + for values that weren't learned. Valid values are + `0`, `1`. Defaults to `0`. + type: number + type: object + type: array + thirdPartyRuleOptions: + description: party detection method. (see below for nested + schema) Options for rules using the third-party detection + method. + items: + properties: + defaultNotifications: + description: party cases match. Notification targets + for the default rule case, when none of the third-party + cases match. + items: + type: string + type: array + defaultStatus: + description: party cases match. Valid values are info, + low, medium, high, critical. Severity of the default + rule case, when none of the third-party cases match. + Valid values are `info`, `low`, `medium`, `high`, + `critical`. + type: string + rootQuery: + description: party case queries. Each of them can + have different group by fields, to aggregate differently + based on the type of alert. (see below for nested + schema) Queries to be combined with third-party + case queries. Each of them can have different group + by fields, to aggregate differently based on the + type of alert. + items: + properties: + groupByFields: + description: (List of String) Fields to group + by. If empty, each log triggers a signal. + Fields to group by. If empty, each log triggers + a signal. + items: + type: string + type: array + query: + description: (Block List) Queries for selecting + logs which are part of the rule. (see below + for nested schema) Query to filter logs. + type: string + type: object + type: array + signalTitleTemplate: + description: (String) A template for the signal title; + if omitted, the title is generated based on the + case name. A template for the signal title; if omitted, + the title is generated based on the case name. + type: string + type: object + type: array + type: object + type: array + query: + description: (Block List) Queries for selecting logs which are + part of the rule. (see below for nested schema) Queries for + selecting logs which are part of the rule. + items: + properties: + agentRule: + description: (Block List, Deprecated) Deprecated. It won't + be applied anymore. Deprecated. agent_rule has been deprecated + in favor of new Agent Rule resource. (see below for nested + schema) **Deprecated**. It won't be applied anymore. **Deprecated.** + `agent_rule` has been deprecated in favor of new Agent + Rule resource. + items: + properties: + agentRuleId: + description: (String) Deprecated. It won't be applied + anymore. **Deprecated**. It won't be applied anymore. + type: string + expression: + description: (String) Deprecated. It won't be applied + anymore. **Deprecated**. It won't be applied anymore. + type: string + type: object + type: array + aggregation: + description: (String) The aggregation type. For Signal Correlation + rules, it must be event_count. Valid values are count, + cardinality, sum, max, new_value, geo_data, event_count, + none. Defaults to "count". The aggregation type. For Signal + Correlation rules, it must be event_count. Valid values + are `count`, `cardinality`, `sum`, `max`, `new_value`, + `geo_data`, `event_count`, `none`. Defaults to `"count"`. + type: string + distinctFields: + description: (List of String) Field for which the cardinality + is measured. Sent as an array. Field for which the cardinality + is measured. Sent as an array. + items: + type: string + type: array + groupByFields: + description: (List of String) Fields to group by. If empty, + each log triggers a signal. Fields to group by. + items: + type: string + type: array + metric: + description: (String, Deprecated) The target field to aggregate + over when using the sum, max, or geo_data aggregations. + Deprecated. Configure metrics instead. This attribute + will be removed in the next major version of the provider. + The target field to aggregate over when using the `sum`, + `max`, or `geo_data` aggregations. **Deprecated.** Configure + `metrics` instead. This attribute will be removed in the + next major version of the provider. + type: string + metrics: + description: (List of String) Group of target fields to + aggregate over when using the sum, max, geo_data, or new_value + aggregations. The sum, max, and geo_data aggregations + only accept one value in this list, whereas the new_value + aggregation accepts up to five values. Group of target + fields to aggregate over when using the `sum`, `max`, + `geo_data`, or `new_value` aggregations. The `sum`, `max`, + and `geo_data` aggregations only accept one value in this + list, whereas the `new_value` aggregation accepts up to + five values. + items: + type: string + type: array + name: + description: (String) The name of the rule. Name of the + query. Not compatible with `new_value` aggregations. + type: string + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) Query + to run on logs. + type: string + type: object + type: array + signalQuery: + description: (Block List) Queries for selecting logs which are + part of the rule. (see below for nested schema) Queries for + selecting logs which are part of the rule. + items: + properties: + aggregation: + description: (String) The aggregation type. For Signal Correlation + rules, it must be event_count. Valid values are count, + cardinality, sum, max, new_value, geo_data, event_count, + none. Defaults to "count". The aggregation type. For Signal + Correlation rules, it must be event_count. Valid values + are `count`, `cardinality`, `sum`, `max`, `new_value`, + `geo_data`, `event_count`, `none`. Defaults to `"event_count"`. + type: string + correlatedByFields: + description: (List of String) Fields to correlate by. Fields + to correlate by. + items: + type: string + type: array + correlatedQueryIndex: + description: projected per query attributes of the rule. + Defaults to "". Index of the rule query used to retrieve + the correlated field. An empty string applies correlation + on the non-projected per query attributes of the rule. + Defaults to `""`. + type: string + defaultRuleId: + description: ONLY. Default Rule ID of the signal to correlate. + This value is READ-ONLY. + type: string + name: + description: (String) The name of the rule. Name of the + query. Not compatible with `new_value` aggregations. + type: string + ruleId: + description: (String) Rule ID of the signal to correlate. + Rule ID of the signal to correlate. + type: string + type: object + type: array + tags: + description: (Set of String) Tags for generated signals. Tags + for generated signals. + items: + type: string + type: array + x-kubernetes-list-type: set + thirdPartyCase: + description: party rules. Only required and accepted for third-party + rules (see below for nested schema) Cases for generating signals + for third-party rules. Only required and accepted for third-party + rules + items: + properties: + name: + description: (String) The name of the rule. Name of the + case. + type: string + notifications: + description: (List of String) Notification targets for each + rule case. Notification targets for each rule case. + items: + type: string + type: array + query: + description: (Block List) Queries for selecting logs which + are part of the rule. (see below for nested schema) A + query to associate a third-party event to this case. + type: string + status: + description: (String) Severity of the Security Signal. Valid + values are info, low, medium, high, critical. Severity + of the Security Signal. Valid values are `info`, `low`, + `medium`, `high`, `critical`. + type: string + type: object + type: array + type: + description: (String) The rule type. Valid values are application_security, + log_detection, workload_security, signal_correlation. Defaults + to "log_detection". The rule type. Valid values are `application_security`, + `log_detection`, `workload_security`, `signal_correlation`. + Defaults to `"log_detection"`. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/sensitivedatascanner.datadog.upbound.io_grouporders.yaml b/package/crds/sensitivedatascanner.datadog.upbound.io_grouporders.yaml new file mode 100644 index 0000000..4e609f1 --- /dev/null +++ b/package/crds/sensitivedatascanner.datadog.upbound.io_grouporders.yaml @@ -0,0 +1,332 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: grouporders.sensitivedatascanner.datadog.upbound.io +spec: + group: sensitivedatascanner.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: GroupOrder + listKind: GroupOrderList + plural: grouporders + singular: grouporder + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: GroupOrder is the Schema for the GroupOrders API. Provides a + Datadog Sensitive Data Scanner Group Order API resource. This can be used + to manage the order of Datadog Sensitive Data Scanner Groups. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GroupOrderSpec defines the desired state of GroupOrder + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + groupIds: + description: (List of String) The list of Sensitive Data Scanner + group IDs, in order. Logs are tested against the query filter + of each index one by one following the order of the list. The + list of Sensitive Data Scanner group IDs, in order. Logs are + tested against the query filter of each index one by one following + the order of the list. + items: + type: string + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + groupIds: + description: (List of String) The list of Sensitive Data Scanner + group IDs, in order. Logs are tested against the query filter + of each index one by one following the order of the list. The + list of Sensitive Data Scanner group IDs, in order. Logs are + tested against the query filter of each index one by one following + the order of the list. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.groupIds is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.groupIds) + || (has(self.initProvider) && has(self.initProvider.groupIds))' + status: + description: GroupOrderStatus defines the observed state of GroupOrder. + properties: + atProvider: + properties: + groupIds: + description: (List of String) The list of Sensitive Data Scanner + group IDs, in order. Logs are tested against the query filter + of each index one by one following the order of the list. The + list of Sensitive Data Scanner group IDs, in order. Logs are + tested against the query filter of each index one by one following + the order of the list. + items: + type: string + type: array + id: + description: (String) The ID of this resource. + type: string + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/sensitivedatascanner.datadog.upbound.io_groups.yaml b/package/crds/sensitivedatascanner.datadog.upbound.io_groups.yaml new file mode 100644 index 0000000..c3c36cf --- /dev/null +++ b/package/crds/sensitivedatascanner.datadog.upbound.io_groups.yaml @@ -0,0 +1,418 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: groups.sensitivedatascanner.datadog.upbound.io +spec: + group: sensitivedatascanner.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Group + listKind: GroupList + plural: groups + singular: group + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Group is the Schema for the Groups API. Provides a Sensitive + Data Scanner group resource. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GroupSpec defines the desired state of Group + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) Description of the Datadog scanning group. + Description of the Datadog scanning group. + type: string + filter: + description: '(Block List, Min: 1, Max: 1) Filter object the scanning + group applies. (see below for nested schema) Filter object the + scanning group applies.' + items: + properties: + query: + description: (String) Query to filter the events. Query + to filter the events. + type: string + type: object + type: array + isEnabled: + description: disabled by our backend Whether or not the scanning + group is enabled. If the group doesn't contain any rule or if + all the rules in it are disabled, the group is force-disabled + by our backend + type: boolean + name: + description: (String) Name of the Datadog scanning group. Name + of the Datadog scanning group. + type: string + productList: + description: (Set of String) List of products the scanning group + applies. Valid values are logs, rum, events, apm. List of products + the scanning group applies. Valid values are `logs`, `rum`, + `events`, `apm`. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) Description of the Datadog scanning group. + Description of the Datadog scanning group. + type: string + filter: + description: '(Block List, Min: 1, Max: 1) Filter object the scanning + group applies. (see below for nested schema) Filter object the + scanning group applies.' + items: + properties: + query: + description: (String) Query to filter the events. Query + to filter the events. + type: string + type: object + type: array + isEnabled: + description: disabled by our backend Whether or not the scanning + group is enabled. If the group doesn't contain any rule or if + all the rules in it are disabled, the group is force-disabled + by our backend + type: boolean + name: + description: (String) Name of the Datadog scanning group. Name + of the Datadog scanning group. + type: string + productList: + description: (Set of String) List of products the scanning group + applies. Valid values are logs, rum, events, apm. List of products + the scanning group applies. Valid values are `logs`, `rum`, + `events`, `apm`. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.filter is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.filter) + || (has(self.initProvider) && has(self.initProvider.filter))' + - message: spec.forProvider.isEnabled is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.isEnabled) + || (has(self.initProvider) && has(self.initProvider.isEnabled))' + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.productList is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.productList) + || (has(self.initProvider) && has(self.initProvider.productList))' + status: + description: GroupStatus defines the observed state of Group. + properties: + atProvider: + properties: + description: + description: (String) Description of the Datadog scanning group. + Description of the Datadog scanning group. + type: string + filter: + description: '(Block List, Min: 1, Max: 1) Filter object the scanning + group applies. (see below for nested schema) Filter object the + scanning group applies.' + items: + properties: + query: + description: (String) Query to filter the events. Query + to filter the events. + type: string + type: object + type: array + id: + description: (String) The ID of this resource. + type: string + isEnabled: + description: disabled by our backend Whether or not the scanning + group is enabled. If the group doesn't contain any rule or if + all the rules in it are disabled, the group is force-disabled + by our backend + type: boolean + name: + description: (String) Name of the Datadog scanning group. Name + of the Datadog scanning group. + type: string + productList: + description: (Set of String) List of products the scanning group + applies. Valid values are logs, rum, events, apm. List of products + the scanning group applies. Valid values are `logs`, `rum`, + `events`, `apm`. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/sensitivedatascanner.datadog.upbound.io_rules.yaml b/package/crds/sensitivedatascanner.datadog.upbound.io_rules.yaml new file mode 100644 index 0000000..bd79cdf --- /dev/null +++ b/package/crds/sensitivedatascanner.datadog.upbound.io_rules.yaml @@ -0,0 +1,661 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: rules.sensitivedatascanner.datadog.upbound.io +spec: + group: sensitivedatascanner.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Rule + listKind: RuleList + plural: rules + singular: rule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Rule is the Schema for the Rules API. Provides a Datadog SensitiveDataScannerRule + resource. This can be used to create and manage Datadog sensitivedatascanner_rule. + Setting the create_before_destroy lifecycle Meta-argument to true is highly + recommended if modifying the included_keyword_configuration field to avoid + unexpectedly disabling Sensitive Data Scanner groups. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RuleSpec defines the desired state of Rule + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) Description of the rule. Description of + the rule. + type: string + excludedNamespaces: + description: path of the namespaces array. Attributes excluded + from the scan. If namespaces is provided, it has to be a sub-path + of the namespaces array. + items: + type: string + type: array + groupId: + description: (String) Id of the scanning group the rule belongs + to. Id of the scanning group the rule belongs to. + type: string + includedKeywordConfiguration: + description: argument to true is highly recommended if modifying + this field to avoid unexpectedly disabling Sensitive Data Scanner + groups. (see below for nested schema) Object defining a set + of keywords and a number of characters that help reduce noise. + You can provide a list of keywords you would like to check within + a defined proximity of the matching pattern. If any of the keywords + are found within the proximity check then the match is kept. + If none are found, the match is discarded. Setting the `create_before_destroy` + lifecycle Meta-argument to `true` is highly recommended if modifying + this field to avoid unexpectedly disabling Sensitive Data Scanner + groups. + items: + properties: + characterCount: + description: (Number) Number of characters before the match + to find a keyword validating the match. It must be between + 1 and 50 (inclusive). Number of characters before the + match to find a keyword validating the match. It must + be between 1 and 50 (inclusive). + type: number + keywords: + description: (List of String) Keyword list that is checked + during scanning in order to validate a match. The number + of keywords in the list must be lower than or equal to + 30. Keyword list that is checked during scanning in order + to validate a match. The number of keywords in the list + must be lower than or equal to 30. + items: + type: string + type: array + type: object + type: array + isEnabled: + description: (Boolean) Whether or not the rule is enabled. Whether + or not the rule is enabled. + type: boolean + name: + description: (String) Name of the rule. Name of the rule. + type: string + namespaces: + description: (List of String) Attributes included in the scan. + If namespaces is empty or missing, all attributes except excluded_namespaces + are scanned. If both are missing the whole event is scanned. + Attributes included in the scan. If namespaces is empty or missing, + all attributes except excluded_namespaces are scanned. If both + are missing the whole event is scanned. + items: + type: string + type: array + pattern: + description: (String) Not included if there is a relationship + to a standard pattern. Not included if there is a relationship + to a standard pattern. + type: string + standardPatternId: + description: (String) Id of the standard pattern the rule refers + to. If provided, then pattern must not be provided. Id of the + standard pattern the rule refers to. If provided, then pattern + must not be provided. + type: string + tags: + description: (List of String) List of tags. List of tags. + items: + type: string + type: array + textReplacement: + description: '(Block List, Max: 1) Object describing how the scanned + event will be replaced. Defaults to type: none (see below for + nested schema) Object describing how the scanned event will + be replaced. Defaults to `type: none`' + items: + properties: + numberOfChars: + description: (Number) Required if type == 'partial_replacement_from_beginning' + or 'partial_replacement_from_end'. It must be > 0. Required + if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. + It must be > 0. + type: number + replacementString: + description: (String) Required if type == 'replacement_string'. + Required if type == 'replacement_string'. + type: string + type: + description: (String) Type of the replacement text. None + means no replacement. hash means the data will be stubbed. + replacement_string means that one can chose a text to + replace the data. partial_replacement_from_beginning allows + a user to partially replace the data from the beginning, + and partial_replacement_from_end on the other hand, allows + to replace data from the end. Valid values are none, hash, + replacement_string, partial_replacement_from_beginning, + partial_replacement_from_end. Type of the replacement + text. None means no replacement. hash means the data will + be stubbed. replacement_string means that one can chose + a text to replace the data. partial_replacement_from_beginning + allows a user to partially replace the data from the beginning, + and partial_replacement_from_end on the other hand, allows + to replace data from the end. Valid values are `none`, + `hash`, `replacement_string`, `partial_replacement_from_beginning`, + `partial_replacement_from_end`. + type: string + type: object + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) Description of the rule. Description of + the rule. + type: string + excludedNamespaces: + description: path of the namespaces array. Attributes excluded + from the scan. If namespaces is provided, it has to be a sub-path + of the namespaces array. + items: + type: string + type: array + groupId: + description: (String) Id of the scanning group the rule belongs + to. Id of the scanning group the rule belongs to. + type: string + includedKeywordConfiguration: + description: argument to true is highly recommended if modifying + this field to avoid unexpectedly disabling Sensitive Data Scanner + groups. (see below for nested schema) Object defining a set + of keywords and a number of characters that help reduce noise. + You can provide a list of keywords you would like to check within + a defined proximity of the matching pattern. If any of the keywords + are found within the proximity check then the match is kept. + If none are found, the match is discarded. Setting the `create_before_destroy` + lifecycle Meta-argument to `true` is highly recommended if modifying + this field to avoid unexpectedly disabling Sensitive Data Scanner + groups. + items: + properties: + characterCount: + description: (Number) Number of characters before the match + to find a keyword validating the match. It must be between + 1 and 50 (inclusive). Number of characters before the + match to find a keyword validating the match. It must + be between 1 and 50 (inclusive). + type: number + keywords: + description: (List of String) Keyword list that is checked + during scanning in order to validate a match. The number + of keywords in the list must be lower than or equal to + 30. Keyword list that is checked during scanning in order + to validate a match. The number of keywords in the list + must be lower than or equal to 30. + items: + type: string + type: array + type: object + type: array + isEnabled: + description: (Boolean) Whether or not the rule is enabled. Whether + or not the rule is enabled. + type: boolean + name: + description: (String) Name of the rule. Name of the rule. + type: string + namespaces: + description: (List of String) Attributes included in the scan. + If namespaces is empty or missing, all attributes except excluded_namespaces + are scanned. If both are missing the whole event is scanned. + Attributes included in the scan. If namespaces is empty or missing, + all attributes except excluded_namespaces are scanned. If both + are missing the whole event is scanned. + items: + type: string + type: array + pattern: + description: (String) Not included if there is a relationship + to a standard pattern. Not included if there is a relationship + to a standard pattern. + type: string + standardPatternId: + description: (String) Id of the standard pattern the rule refers + to. If provided, then pattern must not be provided. Id of the + standard pattern the rule refers to. If provided, then pattern + must not be provided. + type: string + tags: + description: (List of String) List of tags. List of tags. + items: + type: string + type: array + textReplacement: + description: '(Block List, Max: 1) Object describing how the scanned + event will be replaced. Defaults to type: none (see below for + nested schema) Object describing how the scanned event will + be replaced. Defaults to `type: none`' + items: + properties: + numberOfChars: + description: (Number) Required if type == 'partial_replacement_from_beginning' + or 'partial_replacement_from_end'. It must be > 0. Required + if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. + It must be > 0. + type: number + replacementString: + description: (String) Required if type == 'replacement_string'. + Required if type == 'replacement_string'. + type: string + type: + description: (String) Type of the replacement text. None + means no replacement. hash means the data will be stubbed. + replacement_string means that one can chose a text to + replace the data. partial_replacement_from_beginning allows + a user to partially replace the data from the beginning, + and partial_replacement_from_end on the other hand, allows + to replace data from the end. Valid values are none, hash, + replacement_string, partial_replacement_from_beginning, + partial_replacement_from_end. Type of the replacement + text. None means no replacement. hash means the data will + be stubbed. replacement_string means that one can chose + a text to replace the data. partial_replacement_from_beginning + allows a user to partially replace the data from the beginning, + and partial_replacement_from_end on the other hand, allows + to replace data from the end. Valid values are `none`, + `hash`, `replacement_string`, `partial_replacement_from_beginning`, + `partial_replacement_from_end`. + type: string + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.groupId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.groupId) + || (has(self.initProvider) && has(self.initProvider.groupId))' + status: + description: RuleStatus defines the observed state of Rule. + properties: + atProvider: + properties: + description: + description: (String) Description of the rule. Description of + the rule. + type: string + excludedNamespaces: + description: path of the namespaces array. Attributes excluded + from the scan. If namespaces is provided, it has to be a sub-path + of the namespaces array. + items: + type: string + type: array + groupId: + description: (String) Id of the scanning group the rule belongs + to. Id of the scanning group the rule belongs to. + type: string + id: + description: (String) The ID of this resource. + type: string + includedKeywordConfiguration: + description: argument to true is highly recommended if modifying + this field to avoid unexpectedly disabling Sensitive Data Scanner + groups. (see below for nested schema) Object defining a set + of keywords and a number of characters that help reduce noise. + You can provide a list of keywords you would like to check within + a defined proximity of the matching pattern. If any of the keywords + are found within the proximity check then the match is kept. + If none are found, the match is discarded. Setting the `create_before_destroy` + lifecycle Meta-argument to `true` is highly recommended if modifying + this field to avoid unexpectedly disabling Sensitive Data Scanner + groups. + items: + properties: + characterCount: + description: (Number) Number of characters before the match + to find a keyword validating the match. It must be between + 1 and 50 (inclusive). Number of characters before the + match to find a keyword validating the match. It must + be between 1 and 50 (inclusive). + type: number + keywords: + description: (List of String) Keyword list that is checked + during scanning in order to validate a match. The number + of keywords in the list must be lower than or equal to + 30. Keyword list that is checked during scanning in order + to validate a match. The number of keywords in the list + must be lower than or equal to 30. + items: + type: string + type: array + type: object + type: array + isEnabled: + description: (Boolean) Whether or not the rule is enabled. Whether + or not the rule is enabled. + type: boolean + name: + description: (String) Name of the rule. Name of the rule. + type: string + namespaces: + description: (List of String) Attributes included in the scan. + If namespaces is empty or missing, all attributes except excluded_namespaces + are scanned. If both are missing the whole event is scanned. + Attributes included in the scan. If namespaces is empty or missing, + all attributes except excluded_namespaces are scanned. If both + are missing the whole event is scanned. + items: + type: string + type: array + pattern: + description: (String) Not included if there is a relationship + to a standard pattern. Not included if there is a relationship + to a standard pattern. + type: string + standardPatternId: + description: (String) Id of the standard pattern the rule refers + to. If provided, then pattern must not be provided. Id of the + standard pattern the rule refers to. If provided, then pattern + must not be provided. + type: string + tags: + description: (List of String) List of tags. List of tags. + items: + type: string + type: array + textReplacement: + description: '(Block List, Max: 1) Object describing how the scanned + event will be replaced. Defaults to type: none (see below for + nested schema) Object describing how the scanned event will + be replaced. Defaults to `type: none`' + items: + properties: + numberOfChars: + description: (Number) Required if type == 'partial_replacement_from_beginning' + or 'partial_replacement_from_end'. It must be > 0. Required + if type == 'partial_replacement_from_beginning' or 'partial_replacement_from_end'. + It must be > 0. + type: number + replacementString: + description: (String) Required if type == 'replacement_string'. + Required if type == 'replacement_string'. + type: string + type: + description: (String) Type of the replacement text. None + means no replacement. hash means the data will be stubbed. + replacement_string means that one can chose a text to + replace the data. partial_replacement_from_beginning allows + a user to partially replace the data from the beginning, + and partial_replacement_from_end on the other hand, allows + to replace data from the end. Valid values are none, hash, + replacement_string, partial_replacement_from_beginning, + partial_replacement_from_end. Type of the replacement + text. None means no replacement. hash means the data will + be stubbed. replacement_string means that one can chose + a text to replace the data. partial_replacement_from_beginning + allows a user to partially replace the data from the beginning, + and partial_replacement_from_end on the other hand, allows + to replace data from the end. Valid values are `none`, + `hash`, `replacement_string`, `partial_replacement_from_beginning`, + `partial_replacement_from_end`. + type: string + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/synthetics.datadog.upbound.io_concurrencycaps.yaml b/package/crds/synthetics.datadog.upbound.io_concurrencycaps.yaml new file mode 100644 index 0000000..d794d0f --- /dev/null +++ b/package/crds/synthetics.datadog.upbound.io_concurrencycaps.yaml @@ -0,0 +1,317 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: concurrencycaps.synthetics.datadog.upbound.io +spec: + group: synthetics.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ConcurrencyCap + listKind: ConcurrencyCapList + plural: concurrencycaps + singular: concurrencycap + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: ConcurrencyCap is the Schema for the ConcurrencyCaps API. Provides + a Datadog Synthetics On Demand Concurrency Cap API resource. This can be + used to manage the Concurrency Cap for Synthetic tests. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConcurrencyCapSpec defines the desired state of ConcurrencyCap + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + onDemandConcurrencyCap: + description: demand concurrency cap, customizing the number of + Synthetic tests run in parallel. Value of the on-demand concurrency + cap, customizing the number of Synthetic tests run in parallel. + type: number + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + onDemandConcurrencyCap: + description: demand concurrency cap, customizing the number of + Synthetic tests run in parallel. Value of the on-demand concurrency + cap, customizing the number of Synthetic tests run in parallel. + type: number + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.onDemandConcurrencyCap is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.onDemandConcurrencyCap) + || (has(self.initProvider) && has(self.initProvider.onDemandConcurrencyCap))' + status: + description: ConcurrencyCapStatus defines the observed state of ConcurrencyCap. + properties: + atProvider: + properties: + id: + description: (String) The ID of this resource. + type: string + onDemandConcurrencyCap: + description: demand concurrency cap, customizing the number of + Synthetic tests run in parallel. Value of the on-demand concurrency + cap, customizing the number of Synthetic tests run in parallel. + type: number + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/synthetics.datadog.upbound.io_globalvariables.yaml b/package/crds/synthetics.datadog.upbound.io_globalvariables.yaml new file mode 100644 index 0000000..9fa4bbd --- /dev/null +++ b/package/crds/synthetics.datadog.upbound.io_globalvariables.yaml @@ -0,0 +1,632 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: globalvariables.synthetics.datadog.upbound.io +spec: + group: synthetics.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: GlobalVariable + listKind: GlobalVariableList + plural: globalvariables + singular: globalvariable + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: GlobalVariable is the Schema for the GlobalVariables API. Provides + a Datadog synthetics global variable resource. This can be used to create + and manage Datadog synthetics global variables. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GlobalVariableSpec defines the desired state of GlobalVariable + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) Description of the global variable. Description + of the global variable. + type: string + name: + description: (String) Synthetics global variable name. Synthetics + global variable name. + type: string + options: + description: '(Block List, Max: 1) Additional options for the + variable, such as a MFA token. (see below for nested schema) + Additional options for the variable, such as a MFA token.' + items: + properties: + totpParameters: + description: '(Block List, Max: 1) Parameters needed for + MFA/TOTP. (see below for nested schema) Parameters needed + for MFA/TOTP.' + items: + properties: + digits: + description: (Number) Number of digits for the OTP. + Number of digits for the OTP. + type: number + refreshInterval: + description: (Number) Interval for which to refresh + the token (in seconds). Interval for which to refresh + the token (in seconds). + type: number + type: object + type: array + type: object + type: array + parseTestId: + description: (String) Id of the Synthetics test to use for a variable + from test. Id of the Synthetics test to use for a variable from + test. + type: string + parseTestOptions: + description: '(Block List, Max: 1) ID of the Synthetics test to + use a source of the global variable value. (see below for nested + schema) ID of the Synthetics test to use a source of the global + variable value.' + items: + properties: + field: + description: (String) Required when type = http_header. + Defines the header to use to extract the value Required + when type = `http_header`. Defines the header to use to + extract the value + type: string + localVariableName: + description: (String) When type is local_variable, name + of the local variable to use to extract the value. When + type is `local_variable`, name of the local variable to + use to extract the value. + type: string + parser: + description: '(Block List, Max: 1) (see below for nested + schema)' + items: + properties: + type: + description: (String) Defines the source to use to + extract the value. Valid values are http_body, http_header, + local_variable. Type of parser to extract the value. + Valid values are `raw`, `json_path`, `regex`, `x_path`. + type: string + value: + description: (String, Sensitive) The value of the + global variable. Value for the parser to use, required + for type `json_path` or `regex`. + type: string + type: object + type: array + type: + description: (String) Defines the source to use to extract + the value. Valid values are http_body, http_header, local_variable. + Defines the source to use to extract the value. Valid + values are `http_body`, `http_header`, `local_variable`. + type: string + type: object + type: array + restrictedRoles: + description: (Set of String) A list of role identifiers to associate + with the Synthetics global variable. A list of role identifiers + to associate with the Synthetics global variable. + items: + type: string + type: array + x-kubernetes-list-type: set + secure: + description: (Boolean) If set to true, the value of the global + variable is hidden. Defaults to false. If set to true, the value + of the global variable is hidden. Defaults to `false`. + type: boolean + tags: + description: (List of String) A list of tags to associate with + your synthetics global variable. A list of tags to associate + with your synthetics global variable. + items: + type: string + type: array + valueSecretRef: + description: (String, Sensitive) The value of the global variable. + The value of the global variable. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) Description of the global variable. Description + of the global variable. + type: string + name: + description: (String) Synthetics global variable name. Synthetics + global variable name. + type: string + options: + description: '(Block List, Max: 1) Additional options for the + variable, such as a MFA token. (see below for nested schema) + Additional options for the variable, such as a MFA token.' + items: + properties: + totpParameters: + description: '(Block List, Max: 1) Parameters needed for + MFA/TOTP. (see below for nested schema) Parameters needed + for MFA/TOTP.' + items: + properties: + digits: + description: (Number) Number of digits for the OTP. + Number of digits for the OTP. + type: number + refreshInterval: + description: (Number) Interval for which to refresh + the token (in seconds). Interval for which to refresh + the token (in seconds). + type: number + type: object + type: array + type: object + type: array + parseTestId: + description: (String) Id of the Synthetics test to use for a variable + from test. Id of the Synthetics test to use for a variable from + test. + type: string + parseTestOptions: + description: '(Block List, Max: 1) ID of the Synthetics test to + use a source of the global variable value. (see below for nested + schema) ID of the Synthetics test to use a source of the global + variable value.' + items: + properties: + field: + description: (String) Required when type = http_header. + Defines the header to use to extract the value Required + when type = `http_header`. Defines the header to use to + extract the value + type: string + localVariableName: + description: (String) When type is local_variable, name + of the local variable to use to extract the value. When + type is `local_variable`, name of the local variable to + use to extract the value. + type: string + parser: + description: '(Block List, Max: 1) (see below for nested + schema)' + items: + properties: + type: + description: (String) Defines the source to use to + extract the value. Valid values are http_body, http_header, + local_variable. Type of parser to extract the value. + Valid values are `raw`, `json_path`, `regex`, `x_path`. + type: string + value: + description: (String, Sensitive) The value of the + global variable. Value for the parser to use, required + for type `json_path` or `regex`. + type: string + type: object + type: array + type: + description: (String) Defines the source to use to extract + the value. Valid values are http_body, http_header, local_variable. + Defines the source to use to extract the value. Valid + values are `http_body`, `http_header`, `local_variable`. + type: string + type: object + type: array + restrictedRoles: + description: (Set of String) A list of role identifiers to associate + with the Synthetics global variable. A list of role identifiers + to associate with the Synthetics global variable. + items: + type: string + type: array + x-kubernetes-list-type: set + secure: + description: (Boolean) If set to true, the value of the global + variable is hidden. Defaults to false. If set to true, the value + of the global variable is hidden. Defaults to `false`. + type: boolean + tags: + description: (List of String) A list of tags to associate with + your synthetics global variable. A list of tags to associate + with your synthetics global variable. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + - message: spec.forProvider.valueSecretRef is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.valueSecretRef)' + status: + description: GlobalVariableStatus defines the observed state of GlobalVariable. + properties: + atProvider: + properties: + description: + description: (String) Description of the global variable. Description + of the global variable. + type: string + id: + description: (String) The ID of this resource. + type: string + name: + description: (String) Synthetics global variable name. Synthetics + global variable name. + type: string + options: + description: '(Block List, Max: 1) Additional options for the + variable, such as a MFA token. (see below for nested schema) + Additional options for the variable, such as a MFA token.' + items: + properties: + totpParameters: + description: '(Block List, Max: 1) Parameters needed for + MFA/TOTP. (see below for nested schema) Parameters needed + for MFA/TOTP.' + items: + properties: + digits: + description: (Number) Number of digits for the OTP. + Number of digits for the OTP. + type: number + refreshInterval: + description: (Number) Interval for which to refresh + the token (in seconds). Interval for which to refresh + the token (in seconds). + type: number + type: object + type: array + type: object + type: array + parseTestId: + description: (String) Id of the Synthetics test to use for a variable + from test. Id of the Synthetics test to use for a variable from + test. + type: string + parseTestOptions: + description: '(Block List, Max: 1) ID of the Synthetics test to + use a source of the global variable value. (see below for nested + schema) ID of the Synthetics test to use a source of the global + variable value.' + items: + properties: + field: + description: (String) Required when type = http_header. + Defines the header to use to extract the value Required + when type = `http_header`. Defines the header to use to + extract the value + type: string + localVariableName: + description: (String) When type is local_variable, name + of the local variable to use to extract the value. When + type is `local_variable`, name of the local variable to + use to extract the value. + type: string + parser: + description: '(Block List, Max: 1) (see below for nested + schema)' + items: + properties: + type: + description: (String) Defines the source to use to + extract the value. Valid values are http_body, http_header, + local_variable. Type of parser to extract the value. + Valid values are `raw`, `json_path`, `regex`, `x_path`. + type: string + value: + description: (String, Sensitive) The value of the + global variable. Value for the parser to use, required + for type `json_path` or `regex`. + type: string + type: object + type: array + type: + description: (String) Defines the source to use to extract + the value. Valid values are http_body, http_header, local_variable. + Defines the source to use to extract the value. Valid + values are `http_body`, `http_header`, `local_variable`. + type: string + type: object + type: array + restrictedRoles: + description: (Set of String) A list of role identifiers to associate + with the Synthetics global variable. A list of role identifiers + to associate with the Synthetics global variable. + items: + type: string + type: array + x-kubernetes-list-type: set + secure: + description: (Boolean) If set to true, the value of the global + variable is hidden. Defaults to false. If set to true, the value + of the global variable is hidden. Defaults to `false`. + type: boolean + tags: + description: (List of String) A list of tags to associate with + your synthetics global variable. A list of tags to associate + with your synthetics global variable. + items: + type: string + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/synthetics.datadog.upbound.io_privatelocations.yaml b/package/crds/synthetics.datadog.upbound.io_privatelocations.yaml new file mode 100644 index 0000000..af1cdb5 --- /dev/null +++ b/package/crds/synthetics.datadog.upbound.io_privatelocations.yaml @@ -0,0 +1,395 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + name: privatelocations.synthetics.datadog.upbound.io +spec: + group: synthetics.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: PrivateLocation + listKind: PrivateLocationList + plural: privatelocations + singular: privatelocation + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: PrivateLocation is the Schema for the PrivateLocations API. Provides + a Datadog synthetics private location resource. This can be used to create + and manage Datadog synthetics private locations. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PrivateLocationSpec defines the desired state of PrivateLocation + properties: + deletionPolicy: + default: Delete + description: 'DeletionPolicy specifies what will happen to the underlying + external when this managed resource is deleted - either "Delete" + or "Orphan" the external resource. This field is planned to be deprecated + in favor of the ManagementPolicies field in a future release. Currently, + both could be set independently and non-default values would be + honored if the feature flag is enabled. See the design doc for more + information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + description: + description: (String) Description of the private location. Description + of the private location. + type: string + metadata: + description: '(Block List, Max: 1) The private location metadata + (see below for nested schema) The private location metadata' + items: + properties: + restrictedRoles: + description: (Set of String) A list of role identifiers + pulled from the Roles API to restrict read and write access. + A list of role identifiers pulled from the Roles API to + restrict read and write access. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + type: array + name: + description: (String) Synthetics private location name. Synthetics + private location name. + type: string + tags: + description: (List of String) A list of tags to associate with + your synthetics private location. A list of tags to associate + with your synthetics private location. + items: + type: string + type: array + type: object + initProvider: + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. + properties: + description: + description: (String) Description of the private location. Description + of the private location. + type: string + metadata: + description: '(Block List, Max: 1) The private location metadata + (see below for nested schema) The private location metadata' + items: + properties: + restrictedRoles: + description: (Set of String) A list of role identifiers + pulled from the Roles API to restrict read and write access. + A list of role identifiers pulled from the Roles API to + restrict read and write access. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + type: array + name: + description: (String) Synthetics private location name. Synthetics + private location name. + type: string + tags: + description: (List of String) A list of tags to associate with + your synthetics private location. A list of tags to associate + with your synthetics private location. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: ProviderConfigReference specifies how the provider that + will be used to create, observe, update, and delete this managed + resource should be configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of this + reference is required. The default is 'Required', which + means the reconcile will fail if the reference cannot be + resolved. 'Optional' means this reference will be a no-op + if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will attempt + to resolve the reference only when the corresponding field + is not present. Use 'Always' to resolve the reference on + every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: PublishConnectionDetailsTo specifies the connection secret + config which contains a name, metadata and a reference to secret + store config to which any connection details for this managed resource + should be written. Connection details frequently include the endpoint, + username, and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: SecretStoreConfigRef specifies which secret store + config should be used for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: Annotations are the annotations to be added to + connection secret. - For Kubernetes secrets, this will be + used as "metadata.annotations". - It is up to Secret Store + implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: Labels are the labels/tags to be added to connection + secret. - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store + types. + type: object + type: + description: Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: WriteConnectionSecretToReference specifies the namespace + and name of a Secret to which any connection details for this managed + resource should be written. Connection details frequently include + the endpoint, username, and password required to connect to the + managed resource. This field is planned to be replaced in a future + release in favor of PublishConnectionDetailsTo. Currently, both + could be set independently and connection details would be published + to both without affecting each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.name is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.name) + || (has(self.initProvider) && has(self.initProvider.name))' + status: + description: PrivateLocationStatus defines the observed state of PrivateLocation. + properties: + atProvider: + properties: + description: + description: (String) Description of the private location. Description + of the private location. + type: string + id: + description: (String) The ID of this resource. + type: string + metadata: + description: '(Block List, Max: 1) The private location metadata + (see below for nested schema) The private location metadata' + items: + properties: + restrictedRoles: + description: (Set of String) A list of role identifiers + pulled from the Roles API to restrict read and write access. + A list of role identifiers pulled from the Roles API to + restrict read and write access. + items: + type: string + type: array + x-kubernetes-list-type: set + type: object + type: array + name: + description: (String) Synthetics private location name. Synthetics + private location name. + type: string + tags: + description: (List of String) A list of tags to associate with + your synthetics private location. A list of tags to associate + with your synthetics private location. + items: + type: string + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: LastTransitionTime is the last time this condition + transitioned from one status to another. + format: date-time + type: string + message: + description: A Message containing details about this condition's + last transition from one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: Type of this condition. At most one of each condition + type may apply to a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crossplane.yaml b/package/crossplane.yaml index 8e70739..d4d6a81 100644 --- a/package/crossplane.yaml +++ b/package/crossplane.yaml @@ -1,4 +1,4 @@ apiVersion: meta.pkg.crossplane.io/v1 kind: Provider metadata: - name: upjet-provider-template + name: provider-datadog